선택적 기능을 사용하여 TypeScript에서 인터페이스를 만들 수 있습니까?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
답변:
현재 TypeScript가 인터페이스에서 함수 선언을 허용하는 세 가지 구문이 있습니다.
validation1 개의 매개 변수 ( any유형)와 boolean반환 값을 사용하는 함수 의 예를 사용하여 :
validation: {(flag: any): boolean};
또는 최신 구문 :
validation(flag: any) : boolean;
또는 대안은 다음과 같습니다.
validation: (flag: any) => boolean;
해결책:
따라서 이전 구문으로 선택 사항으로 만드는 것은 쉽습니다.
validation?: {(flag: any): boolean};
두 번째 구문 사용 (최근 추가-덕분에 @toothbrush)
validation?(flag: any) : boolean;
또는 세 번째 구문에서 (찾은대로) :
validation?: (flag: any) => boolean;
any은 유형이 아니라 암시 적으로 type 인 매개 변수의 이름입니다 any. 인터페이스에서도 매개 변수의 이름을 지정해야합니다. --noImplicitAny가 활성화 된 경우이 코드는 컴파일되지 않습니다. 다음과 같은 형식이어야합니다 . 적절한 매개 변수 이름은 validation?:(whatever:any) => boolean;어디에 있습니까 whatever?
if (object.validation):) 객체 컨텍스트에 대해 필요하므로 if (this.validation)상황에 따라 적절할 수도 있습니다.