Mur*_*göz 17 javascript typescript
我有以下结构:
interface Test1 {
number: number;
}
interface Test2 extends Test1 {
text: string;
}
let test: Test1[] | Test2[] = [];
test.map(obj => {}); // does not work
Run Code Online (Sandbox Code Playgroud)
我收到错误:
无法调用类型缺少调用签名的表达式.输入'{(this:[Test1,Test1,Test1,Test1,Test1],callbackfn :( this:void,value:Test1,index:nu ...'没有兼容的呼叫签名
我怎样才能map超过测试变量?
Tit*_*mir 28
问题是对于union类型,作为函数的成员也将被输入为union类型,因此就typescript而言,其类型map将(<U>(callbackfn: (value: Test1, index: number, array: Test1[]) => U, thisArg?: any) => U[]) | (<U>(callbackfn: (value: Test2, index: number, array: Test2[]) => U)不可调用.
您可以宣告联盟的数组Test1和Test2
let test: (Test1 | Test2)[] = [];
test.map(obj => {});
Run Code Online (Sandbox Code Playgroud)
或者,您可以在拨打电话时使用类型断言:
let test: Test1[] | Test2[] = [];
(test as Array<Test1|Test2>).map(o=> {});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3958 次 |
| 最近记录: |