跳到主要内容

TypeScript 类型断言

使用!与?避免冗余代码

interface TData {
name?: string;
}

const data: TData = {
name: 'Amber',
};

function main() {
if (data.name) {
data.name.charAt(0);
} // 不使用类型断言 则需要if分支
const a = data.name?.charAt(0); // 此时 a 的类型推断为 string|undefined
const b = data.name!.charAt(0); // 此时 b 的类型团队为 string
}

一般的使用?进行安全的调用,避免出现TypeError: Cannot read properties of undefined报错,如果尝试操作 undefined 则安全的返回 undefined。而!则是一个一定存在的类型断言,当开发这明确此时属性一定存在时,跟在属性名身后。