인터페이스의 TypeScript 선택적 기능


100

선택적 기능을 사용하여 TypeScript에서 인터페이스를 만들 수 있습니까?

interface IElement {
  name: string;
  options: any;
  type: string;
  value?: string;
  validation(any): boolean; // --> should be optional.

}

2
대답을 찾았습니다. 다음과 같은 선택적 기능을 구현할 수 있다고 생각합니다. validation ?: (any) => boolean;
Anton Selin 2014

답변:


197

현재 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;

3
작성한 방식 any은 유형이 아니라 암시 적으로 type 인 매개 변수의 이름입니다 any. 인터페이스에서도 매개 변수의 이름을 지정해야합니다. --noImplicitAny가 활성화 된 경우이 코드는 컴파일되지 않습니다. 다음과 같은 형식이어야합니다 . 적절한 매개 변수 이름은 validation?:(whatever:any) => boolean;어디에 있습니까 whatever?
NYCdotNet

@NYCdotNet : 예, 원본 을 읽지 않았어야합니다 . :) 수정
코딩 사라

@ gone-coding 안녕하세요! 함수가 정의되었는지 여부를 어떻게 알 수 있습니까?
Ilan Olkies

1
@IlanOlkies : JavaScript에서 모든 것을 테스트하는 것과 같은 방법입니다. if (object.validation):) 객체 컨텍스트에 대해 필요하므로 if (this.validation)상황에 따라 적절할 수도 있습니다.
Gone Coding
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.