studye / typescript

타입스크립트는 자바스크립트랑 다른 언어인가요?
7 stars 0 forks source link

[typescript - 2.4] Stricter checks on “weak types” #51

Open sculove opened 7 years ago

sculove commented 7 years ago

weak types에 대해 보다 더 엄격하게 체크한다.

BREAKING CHANGES

weak types은 모두 optional한 타입. 예)

interface Options {
    data?: string,
    timeout?: number,
    maxRetries?: number,
}

weak types에서 하나도 겹쳐지지 않는다면. 에러

예1)

function sendMessage(options: Options) {
}

const opts = {
    payload: "hello world!",
    retryOnFail: true,
}

// Error! Type '{ payload: string; retryOnFail: boolean; }' has no properties in common with type 'Options'.
sendMessage(opts); // Options의 옵션속성이 하나도 없다!

클래스에 적용될때 weak types가 하나도 구현되지 않았을 경우에 에러! 예2)

interface Foo {
    someMethod?(): void;
    someOtherMethod?(arg: number): string;
}

// Error! Type 'Dog' has no properties in common with type 'Foo'
class Dog implements Foo {
    bark() {
        return "woof!";
    }
}