2016-08-08 162 views
7

私はTypeScriptにとって非常に新しいです。私はそれをたくさん愛しています。特に、OOPをJavascriptで実行するのがどれほど簡単です。しかし、私は角括弧を使用することになるとセマンティクスを把握しようとしています。そのドキュメントから山括弧 "<>"で囲まれたクラスをTypeScriptで囲むことは何を意味しますか?

は、私が

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>{}; 

私はこれが正確に意味するかを理解して/を考えるための方法何を理解トラブルを抱えていますように、いくつかの例を見てきました。

私にそれを説明してもらえますか?

答えて

12

これは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> {}; 
let a: Props = {}; 
を0

これは同じことをするでしょう

+0

ちょうど好奇心から、インターフェイス定義でこれを行うことは可能ですか?たとえば、 – davejoem

+0

あなたはそれが何を意味するのか分かりません。例を使って質問を編集できますか? –

+0

ちょうど好奇心から、インターフェイス定義でこれを行うことは可能ですか?次に例を示します。 - 'interface Person {name:string; – davejoem

関連する問題