Skip to content

分配缩小

正如我们之前提到的,当我们为任何变量赋值时,TypeScript 会查看赋值的右侧并适当缩小左侧。

typescript
// let x: string | number 
let x = Math.random() < 0.5 ? 10 : "hello world!"; 

x = 1; 
// let x: number 
console.log(x); 

x = "goodbye!"; 
// let x: string 
console.log(x);

请注意,这些分配中的每一个都是有效的。即使在我们第一次赋值后观察到的类型 x 更改为 number ,我们仍然可以将 string 赋值给 x 。这是因为声明类型的 x -该类型 x 开始是 string | number 。

如果我们分配了一个 boolean 给 x ,我们就会看到一个错误,因为它不是声明类型的一部分。

typescript
let x = Math.random() < 0.5 ? 10 : "hello world!"; 

// let x: string | number
x = 1; 

// let x: number 
console.log(x); 

// 出错了! 
x = true; 

// let x: string | number 
console.log(x);