programing

유형 스크립트의 선택적 클래스 구성원

telebox 2023. 7. 1. 08:33
반응형

유형 스크립트의 선택적 클래스 구성원

유형 스크립트 클래스에서 유형 안전 선택 구성원을 지정하는 방법이 있습니까?

그러니까, 뭐랄까...

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#에 대해 잘 알고 있다면, 저는 'string option'과 같은 것을 찾고 있습니다.

다음은 TypeScript 3.x에서 작동합니다.

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

선택 사항이 아닌 구성원(표시된 대로 인라인 또는 생성자에서)을 초기화해야 합니다.

선택적 클래스 속성이 Typescript 2.0에서 기능으로 추가되었습니다.

이 예에서 속성 b는 선택 사항입니다.

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

유형 스크립트 2.0 릴리스 정보 - 선택적 클래스 속성

일부 사용 사례에서는 매개 변수 속성사용하여 이를 수행할 수 있습니다.

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

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

놀이터.

이제 인터페이스에서 이미 허용된 것과 유사한 클래스에서 선택적 속성 및 메서드를 선언할 수 있습니다.

class Bar {
    a: number;
    b?: number;
    f() {
        return 1;
    }
    g?(): number;  // Body of optional method can be omitted
    h?() {
        return 2;
    }
}

--strictNullChecks 모드에서 컴파일할 경우 선택적 속성 및 메서드가 자동으로 정의되지 않은 형식으로 포함됩니다.따라서, 위의 b 속성은 유형 번호 | 정의되지 않았으며, 위의 g 방법은 유형 (() => 숫자) | 정의되지 않았습니다.유형 가드를 사용하여 유형의 정의되지 않은 부분을 제거할 수 있습니다.

function test(x: Bar) {
    x.a;  // number
    x.b;  // number | undefined
    x.f;  // () => number
    x.g;  // (() => number) | undefined
    let f1 = x.f();            // number
    let g1 = x.g && x.g();     // number | undefined
    let g2 = x.g ? x.g() : 0;  // number
}

선택적 클래스 속성

언급URL : https://stackoverflow.com/questions/18916104/optional-class-members-in-typescript

반응형