当我在tsx中使用交集类型时,它坏了。怎么解决

时间:2019-02-24 13:05:58

标签: reactjs typescript

当我在tsx中使用交集类型时,它坏了!

官方文件中的示例


function extend<T, U>(first: T, second: U): T & U {
    let result = <T & U>{};
    for (let id in first) {
        (<any>result)[id] = (<any>first)[id];
    }
    for (let id in second) {
        if (!result.hasOwnProperty(id)) {
            (<any>result)[id] = (<any>second)[id];
        }
    }
    return result;
}


error: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.ts(2362)

1 个答案:

答案 0 :(得分:1)

问题不在于交叉点类型,而在于用于执行类型断言的语法。使用.tsx扩展名时,不能将尖括号用于类型声明,因为尖括号被解释为JSX。

代替此:

let result = <T & U>{};

执行此操作:

let result = {} as T & U;

作为旁注:您可以跳过所有断言,并以以下方式实现您的功能:

function extend<T, U>(first: T, second: U): T & U {
  return Object.assign({}, first, second);
}