zhuawa 学习笔记

FFYY-7216 4-TS

2021-12-27  本文已影响0人  hahahafffyyy

TS基础

typescript 是 javascript 的超集,支持 ecmascript6标准
比 javascript 多了一个类型检查

any unknown never void

interface

定义一个类型接口,使用过程中约束

  1. interface object
interface User {
  name:string
  age?:number
  readonly id:number
}
  1. interface fucntion 函数类型
interface UserFun {
  (name:string,ange:number): void;
}
// 使用
const myfun:UserFun = (name,age) => {
  console.log('name')
}

类 class

class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

let greeter = new Greeter("world");

我们使用new构造了Greeter类的一个实例。 它会调用之前定义的构造函数,创建一个Greeter类型的新对象,并执行构造函数初始化它

泛型

约定类型占位

//不用泛型:
function test(arg:number):number{
  return arg;
}
// 使用泛型
fucntion test1<T>(arg:T):T{
  return arg
}

枚举

使用枚举我们可以定义一些有名字的数字常量。

enum Direction {
    Up = 1,
    Down,
    Left,
    Right
}

迭代器和生成器

iterators():Iterator
Generator

装饰器

装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上。 装饰器使用 @expression这种形式,expression求值后必须为一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入。

@sealed
class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

继承 多态 重载 重写

面向对象语言的特征

继承

class Person{
  move(){
    console.log('yidong')
  }
}
class Human extends Person{
  constructor(theName:string){
    super()
  }
}
const human = new Human();
human.move()//

重写

子类重写父类中的方法,当子类继承父类的时候,调用方法,则会执行子类中的方法,不会执行父类中的方法

class Person{
  move(dis){
    console.log(dis+'fuqin')
  }
}
class Human extends Person{
  constructor(theName:string){
    super()
  }
  move(dis){
    console.log(dis+'children')
  }
}
const human = new Human();
human.move(33)//

重载

方法参数不同,调用的方法不同

抽象类&抽象方法

面试题

1、什么是什么类型推论
根据上下文环境推导出来变量的类型叫类型推论。
2、一下的类型

let f = null;//f 推论为 any

3、type 和 inferface 的区别
interface 侧重与描述数据结构,type(类型别名)侧重与描述类型
不同点:

  1. interface 可以多次定义,合并,type 不行
  2. type 能使用 in关键字,interface 不行
上一篇下一篇

猜你喜欢

热点阅读