一、什么是流动的类型?
从一个已知的变量或者对象通过typeof
或者keyof
获得自己的类型,类型推导的进阶版本。
二、流动类型的实现
2.1 捕获变量的类型typeof
typeof
获取变量或者对象中的某个key的类型,用于定义新变量的类型或者常量字符串
typescript
let foo = 123;
let bar: typeof foo; // 'bar' 类型与 'foo' 类型相同(在这里是: 'number')
bar = 456; // ok
bar = '789'; // Error: 'string' 不能分配给 'number' 类型
const c_foo = 123;
let c_bar: typeof c_foo;
c_bar = 123; // ok
c_bar = 456; // Error: 不能将类型"456"分配给类型"123"
2.2 捕获键的名称keyof
keyof
和typeof
结合使用,能让你捕获对象的的key
的常量字符串。
typescript
enum colors {
RED = 'red',
BLUE = 'blue',
}
type Color = keyof typeof colors;
let color: Color;
color = 'RED';
color = 'BLUE';
// color = 'anythingElse'; // Error:不能将类型""anythingElse""分配给类型""RED" | "BLUE""
总结
如果你喜欢本教程,记得点赞+收藏!关注我获取更多JavaScript/TypeScript开发干货