25

Typescriptクラスでタイプセーフなオプションメンバーを指定する方法はありますか?

つまり、何か...

class Foo {
    a?: string;
    b?: string;
    c: number;
}

....

foo = new Foo();
...
if (foo.a !== undefined) { ... (access foo.a in a type-safe string manner) ... }

OCaml/F# に詳しい方のために、「文字列オプション」のようなものを探しています。

4

4 に答える 4

23

以下は TypeScript 3.x で機能します。

class Foo {
  a?: string;
  b?: string;
  c: number = 123;
}

オプションではないすべてのメンバーを初期化する必要があることに注意してください (示されているようにインラインで、またはコンストラクターで)。

于 2013-09-20T12:32:28.257 に答える
15

オプションのクラス プロパティは、Typescript 2.0 の機能として追加されました。

この例では、プロパティbはオプションです。

class Bar {
  a: number;
  b?: number;
}

Typescript 2.0 リリース ノート - オプションのクラス プロパティ

于 2018-09-14T09:41:46.607 に答える
12

いくつかのユースケースでは、Parameter propertiesでそれを実現できます:

class Test {
    constructor(public a: string, public b: string, public c?: string)
    {
    }
}

var test = new Test('foo', 'bar');

遊び場

于 2016-04-20T13:57:26.523 に答える