2017-12-22 41 views
-1

typescript가 새롭고 typescript에서 선택적 속성 클래스의 유틸리티가 무엇인지 알고 싶습니다.typescript의 선택적 속성 클래스

a?: number; 

a: number | undefined; 
+0

https://www.typescriptlang.org/docs/handbook/interfaces.html#optional-properties는 사용하려는 장소의 예를 제공합니다. – jonrsharpe

답변

1

옵션 특성 : 그리고 차이점은 무엇입니까 는 타이프에서 당신이 선택하게 될 인터페이스의 속성을 선언 할 수 있습니다. 누군가가 당신의 인터페이스 IEmployee를 사용하면

interface IEmployee { 
    firstName: string; 
    lastName: string; 
    middleName?: string; 
} 

다음 가운데 이름이 선택되지만 이름 및 성이 필수입니다 : 당신이 직원 및 중간 이름에 대한 인터페이스가 있다고 가정하면 다음 코드는 다음과 같이됩니다 선택 사항입니다.

let emp: IEmployee = { firstName: "Hohn", lastName: "Doe" } 

파이프 연산자 : 때때로 당신은 변수가 여러 유형을 지정할 수 있음을합니다. 속성을 숫자로 선언하면 숫자 만 저장할 수 있습니다. 파이프 연산자는 typescript에 여러 유형을 저장할 수 있음을 알릴 수 있습니다. 파이프 연산자는 함수에서 무엇인가를 반환 할 때 매우 유용하며 조건에 따라 여러 유형을 반환 할 수 있습니다. ...

+0

유형의 호환성에 중요합니다. 클래스에 대해서도 동일한 예제가 적용됩니다. – asv

+0

파이프 연산자도 클래스에서 작동하지만 선택적 속성은 인터페이스 전용입니다. 클래스에는 선택적 속성의 의미가 없습니다. –

0

매개 변수

선택적 매개 변수의 차이 도움이 될 것입니다 희망, 그리고 매개 변수 유형 number | undefined는 인수를 제공 할 필요가 없다는 것입니다

function a(a?: number) { 
    return a; 
} 

function b(a: number | undefined) { 
    return a; 
} 

// Okay 
a(); 
b(1); 

// Not okay: Expected 1 arguments, but got 0. 
b(); 

이것은 함수, 메소드 및 생성자에 적용됩니다.

엄격한 널 확인

당신이 엄격한 널 수표에 전환하는 경우

, 당신은 어떤 선택적인 매개 변수 또는 속성이 자동으로 조합 유형을 얻을 것이다 찾을 수 있습니다. 즉, 만 number를 지정에도 불구하고, 아래의 예에서 id이 유형 number | undefined을 가지고 의미

// With strict null checks, this: 
class Example { 
    id?: number; 
} 

// ... is the same as this: 
class Example { 
    id?: number | undefined; 
} 

// ... and this: 
class Example { 
    id: number | undefined; 
} 

가 나는 속성 및 매개 변수 사이의 일관성 구문을 유지로 첫 번째 예제를 사용하는 것이 좋습니다 것입니다.