可以将字符串、数字、布尔字面量作为一个类型
例如:创建了一个被称为 foo
变量,它仅接收一个字面量值为 Hello
的变量:
let foo: 'Hello';
foo = 'Bar'; // Error: 'bar' 不能赋值给类型 'Hello'
type OneToFive = 1 | 2 | 3 | 4 | 5;
type Bools = true | false;
常用于:在一个联合类型中组合创建一个强大的(实用的)抽象:
type CardinalDirection = 'North' | 'East' | 'South' | 'West';
function move(distance: number, direction: CardinalDirection) {
// ...
}
move(1, 'North'); // ok
move(1, 'Nurth'); // Error
类型断言
采用类型断言来告诉 TypeScript 你想推断的字面量:
function iTakeFoo(foo: 'foo') {}
const test = {
someProp: 'foo' as 'foo' // 类型断言
};
iTakeFoo(test.someProp); // ok
采用类型注解来告诉TypeScript 推断正确的类型:
function iTakeFoo(foo: 'foo') {}
type Test = {
someProp: 'foo';
};
const test: Test = {
// 推断 `someProp` 永远是 'foo'
someProp: 'foo'
};
iTakeFoo(test.someProp); // ok