语法
<类型>值 或者 值 as 类型
在 tsx 语法(React 的 jsx 语法的 ts 版)中必须用后一种 (值 as 类型) 。
什么情况下会需要用到类型断言?
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法:
function getLen(value: string | number): number {
return value.length;
}
// index.ts(2,22): error : Property 'length' does not exist on type 'string | number'.(注释:"属性“length”在类型“string | number”上不存在。")
// Property 'length' does not exist on type'number'.(注释:"属性“length”在类型“number”上不存在")
而有时候,我们确实需要在还不确定类型的时候就访问其中一个类型的属性或方法,比如:
function getLen(value: string | number): number {
if(value.length) {
return value.length;
}else{
return value.toString().length;
}
}
// error : Property'length'does not exist ontype'string | number'.// Property'length'does not exist ontype'number'.
// error : Property'length'does not exist ontype'string | number'.// Property'length'does not exist ontype'number'.
.这时候还是会报错,跟上面一样,此时 类型断言就有用了,将上面代码修改一下,如下:
function getLen(value: string | number): number {
if( (<string>value).length ) { / /注释:如果你传入的这个value值是string才会进入这个条件里面
return (value).length;
}else{ // 不是string的话就会 进入这个条件
return value.toString().length;
}
}
上述代码:类型断言说白了的意思就是,我把这个参数当做 什么东西(string或者number或者等等,但是必须得是你的参数类型所包括的) 先进行判断,
这就是类型断言基本含义.
笔者原创:yl