[关闭]
@panhonhang 2020-02-17T16:24:04.000000Z 字数 3570 阅读 518

TypeScript学习

javascript


unknown 与 any区别:

let value: unknown;
value.foo.bar;  // ERROR
value();        // ERROR
new value();    // ERROR
value[0][1];    // ERROR

let value: any;
value.foo.bar;  // OK
value();        // OK
new value();    // OK
value[0][1];    // OK
我们看到,这就是 unknown 与 any 的不同之处,虽然它们都可以是任何类型,但是当 unknown 类型被确定是某个类型之前,它不能被进行任何操作比如实例化、getter、函数执行等等。

never用法:

枚举类型

常量枚举:枚举其实可以被 const 声明为常量,好处在于可以提升性能。
原理:枚举类型本来会被编译为 JavaScript 对象。但是常量枚举就会直接使用对象的值,而把对象删除掉。

declare let a: Direction

enum Animal {
Dog,
Cat
}

a = Direction.Up // ok
a = Animal.Dog // 不能将类型“Animal.Dog”分配给类型“Direction”

a 声明为 Direction 类型,可以看成我们声明了一个联合类型 Direction.Up | Direction.Down | Direction.Left | Direction.Right

接口interface:

类class

函数

泛型

静态编写的时候并不确定传入的参数到底是什么类型,那么我们需要变量,这个变量代表了传入的类型,然后再返回这个变量,它是一种特殊的变量,只用于表示类型而不是值。

例子:
function swap(tuple: [T, U]): [U, T] {
return [tuple[1], tuple[0]];
}

swap([7, 'seven']); // ['seven', 7]
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注