类型断言
小于 1 分钟TypescriptTypescript
提示
- “尖括号” 写法
- as 写法
一、前言
TypeScript
很强大,但有时候还是不如我们了解一个值的类型,这时候可以自己通过类型断言来进行类型检查,而不是让TypeScript
来进行。
二 、 例子
来看看下面这个例子:
const getLength = (target) => {
if (target.length) {
return target.length;
} else {
return target.toString().length;
}
};
把它改写成 ts:
const getLength = (target: string | number): number => {
if (target.length) {
// 类型"string | number"上不存在属性"length"
return target.length; // 类型"number"上不存在属性"length"
} else {
return target.toString().length;
}
};
使用类型断言:
const getLength = (target: string | number): number => {
if (<string>target.length) {
// 这种形式JSX代码中不可以使用,同时TSLint不建议的写法
return (target as string).length; // 建议大家始终用这种形式
} else {
return target.toString();
}
};