type Direction = 'up' | 'down' | 'left' | 'right'
let direction:Direction = 'up'
type women = {
wealthy:true,
waste:string
} | {
wealthy:false,
norality:string
}
let richWoman:women = {
wealthy:true,
waste:"购物消费"
}
- 断言的问题
let strOrNum: string | number
strOrNum = '1' 也可能是 strOrNum = 1
strOrNum.endsWith()
strOrNum.toFixed()
- 类型断言后再使用
let strOrNum: string | number
strOrNum = '1';
(strOrNum as number).toFixed()
翻译:将类型“string”转换为类型“number”可能会出错,因为这两种类型都没有与另一种类型充分重叠。如果这是故意的,请先将表达式转换为“未知”。
let strOrNum: string | number
strOrNum = '1';
(strOrNum as unknown as number).toFixed()
let ele = document.getElementById("app")
ele.innerHTML = "hello world"
ele!.innerHTML = "hello world"
console.log(ele!.innerHTML)
- js ?.
let ele = document.getElementById("#app")
ele?.innerHTML = "hello world"
let ele = document.getElementById("#app")
ele?.innerHTML = "hello world"
console.log(ele?.innerHTML)
null || 1 或者 false || 1
??(空值合并操作符) 如果前一个值不是 null 或者 undefined 则返回第一个值,否则返回第二个
false ?? 1
1 ?? 2
null ?? 2
2. as 断言:强制把某一个类型断言成已经存在的某一个类型,as 直接写在变量后面。
let ele = document.getElementById("app");
(ele as HTMLElement).style.background = 'red';
3. 双重断言
let str:string | number = 123;
(str as any as boolean) = true