ts笔记 流动类型

当改变一个类型时,其他相关的类型自动更新,ts这么设计是为了更好的与js的动态性相互结合。

捕获变量的类型

通过 typeof 操作符可以捕获到变量的类型(不适用于常量)

let foo = 123;
let bar: typeof foo; // 'bar' 类型与 'foo' 类型相同(在这里是: 'number')

bar = 456; // ok

捕获类成员的类型

声明一个变量,表示要捕获的类型,然后使用typeof捕获这个类型。

class Foo {
  foo: number;
}

declare let _foo: Foo;

let bar: typeof _foo.foo; // number 类型

捕获字符串类型

使用常量声明一个类型,然后使用typeof捕获这个常量类型。

const foo = 'Hello World';

// 使用一个捕获的类型
let bar: typeof foo;

bar = 'Hello World'; // ok

捕获键名

typeof用于捕获变量的类型,keyof用于捕获类型的键名(注意是类型的键名),两者结合可以实现字符串枚举的效果。

const colors = {
  red: 'red',
  blue: 'blue'
};

type Colors = keyof typeof colors; // 先使用typeof获取到类型 { red: string, blue: string },然后使用keyof获取到键名 'red' | 'blue'

let color: Colors = 'red'; // OK
color = 'blue'; // OK

color = 'green'; // ERROR
常用网站: SegmentFault | GitHub | 掘金社区
原文地址:https://www.cnblogs.com/yesyes/p/15539180.html