1. ホーム
  2. typescript

[解決済み] TypeScriptでクラスを角括弧「<>」で囲むとはどういう意味ですか?

2023-04-05 13:17:34

質問

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

これが具体的にどういうことなのか、どのように考えたらいいのか、理解するのに苦労しています。

どなたか解説していただけませんか?

どのように解決するのですか?

というのは タイプアサーション またはキャスティングと呼ばれます。

これらは同じです。

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

これは同じことをする