尖括号和"有什么区别?''在打字稿2?

时间:2017-09-06 16:40:03

标签: typescript

在下面的代码中使用as<>有什么区别?

选项A - 使用&#39;作为&#39;返回值

convertResultToParams(columnView:IColumnViewResult):IColumnViewParams {
    const params = {};

    Object.keys(this.getDefaultParams())
        .map(key => params[key] = columnView[key]);

    return params as IColumnViewParams;
}

选项B - 使用&#39;括号&#39;返回值

convertResultToParams(columnView:IColumnViewResult):IColumnViewParams {
    const params = {};

    Object.keys(this.getDefaultParams())
        .map(key => params[key] = columnView[key]);

    return <IColumnViewParams>params;
}

为什么我不能在变量声明中声明类型?

enter image description here

1 个答案:

答案 0 :(得分:4)

您的界面可能包含所需的成员,因此初始化为{}无效。如果您正在初始化它,可以将{}转换为接口类型,并将很快添加字段。

const params = {} as IColumnViewParams

最初,Typescript使用<>进行投射,但是添加了jsx支持后,这就成了一个问题,因此添加了as投射操作符。铸造没有区别,只是你可以使用它们的上下文。 as可以在任何地方使用,<>无法在tsx中使用