默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
然而,当你指定了--strictNullChecks标记,null和undefined只能赋值给void和它们各自。 这能避免 很多常见的问题。 也许在某处你想传入一个 string或null或undefined,你可以使用联合类型string | null | undefined
类型断言
类型断言有两种形式。
// 尖括号语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
// as 语法
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
在TypeScript里使用JSX时,只有 as语法断言是被允许的
对象解构
const { a, b } = { a: "baz", b: 101,c:[1,2] }
console.log(a,b) // baz 101
// 创建剩余变量
const { a, ...c } = { a: "baz", b: 101, c: [1, 2] }
console.log(a,c) // baz {b: 101, c: Array(2)}
// 属性重命名 ps:这里的冒号不是指示类型的 let {a, b}: {a: string, b: number} = { a: "baz", b: 101,c:[1,2] };
let { a: newName1, b: newName2 } = { a: "baz", b: 101,c:[1,2] };
console.log(newName1,newName2) // baz 101