반응형
유형 스크립트의 선택적 클래스 구성원
유형 스크립트 클래스에서 유형 안전 선택 구성원을 지정하는 방법이 있습니까?
그러니까, 뭐랄까...
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
반응형
'programing' 카테고리의 다른 글
| 삭제된 파일을 복원할 수 있습니까('git clean -fdx'를 해제합니다)? (0) | 2023.07.06 |
|---|---|
| JUQ를 사용한 Spring Boot과 Spring Data JPA의 기술적 차이 (0) | 2023.07.06 |
| HTTP 오류 500.22 - 내부 서버 오류(통합 관리 파이프라인 모드에서 적용되지 않는 ASP.NET 설정이 탐지되었습니다.) (0) | 2023.07.01 |
| Oracle PL/SQL에서 호출 프로시저 또는 함수의 이름을 가져옵니다. (0) | 2023.07.01 |
| 테이블의 행 크기 결정 (0) | 2023.07.01 |