将一个类括在尖括号“<>”中的内容是什么在TypeScript中意味着什么?

时间:2016-08-08 14:04:57

标签: typescript brackets

我是TypeScript的新手,我非常喜欢它,特别是在Javascript中使用OOP是多么容易。然而,在使用尖括号时,我仍然试图找出语义。

从他们的文档中,我看到了几个像

的例子
interface Counter {
    (start: number): string;
    interval: number;
    reset(): void;
}

function getCounter(): Counter {
    let counter = <Counter>function (start: number) { };
    counter.interval = 123;
    counter.reset = function () { };
    return counter;
}

interface Square extends Shape, PenStroke {
    sideLength: number;
}

let square = <Square>{};

我无法理解这究竟意味着什么或想到/理解它的方式。

有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:47)

这称为Type Assertion或铸造。

这些是相同的:

let square = <Square>{};
let square = {} as Square;

示例:

interface Props {
    x: number;
    y: number;
    name: string;
}

let a = {};
a.x = 3; // error: Property 'x' does not exist on type `{}`

所以你可以这样做:

let a = {} as Props;
a.x = 3;

或者:

let a = <Props> {};

哪个会做同样的

答案 1 :(得分:5)

这称为Type Assertion

您可以在Basarat's "TypeScript Deep Dive"official TypeScript handbook中阅读相关内容。