letage: number = 20; let c = trueasconst; const obj = { name: "whbbit", age, c, } asconst; // 类型为 {readonly name: 'whbbit', readonly age: number, readonly c: true}
数组或对象使用 as const 时,如果内容是引入别处的变量时,就使用该变量的类型,如果是常量时,就使用该常量的值
as const 在解构中使用的便利性
1 2 3 4 5 6 7 8 9
functionfunc() { let a = "whbbit"; let b = 25; return { a, b } asconst; } let { a, b } = func(); // 这时ts可以准确的推断a的类型是string,b的类型是number。 // 不使用as const 时,a和b的类型都是 string | number console.log(a, b);
非空断言
1 2
const el = document.querySelector("#app"); // 类型为 HTMLElement | null
当我们知道 id = app 的元素是一个 div 元素时,我们想让其类型明确为HTMLDivElement 以获得更好的类型提示
1 2
constel: HTMLDivElement = document.querySelector("#app"); // 这时会报错 Type 'HTMLDivElement | null' is not assignable to type 'HTMLDivElement'. Type 'null' is not assignable to type 'HTMLDivElement'.