|
| 1 | +//// { compiler: { }, order: 1 } |
| 2 | + |
| 3 | +// JavaScript의 유연성 때문에, |
| 4 | +// 가정을 검증하기 위해서 코드에 런타임 검사를 추가하는 것이 좋습니다. |
| 5 | + |
| 6 | +// 일반적으로 단언(또는 불변)이라고 불리며 |
| 7 | +// 변수가 예상한 것과 일치하지 않을 때 |
| 8 | +// 초기에 에러를 발생시키는 작은 기능입니다. |
| 9 | + |
| 10 | +// Node는 이 기능을 즉시 사용할 수 있는 함수를 가지고 있으며, |
| 11 | +// assert라고 불리며 import 없이 사용할 수 있습니다. |
| 12 | + |
| 13 | +// 우리는 스스로 정의할 것입니다. |
| 14 | +// value가 true라고 하는 |
| 15 | +// 표현식을 단언하는 함수를 선언합니다: |
| 16 | +declare function assert(value: unknown): asserts value; |
| 17 | + |
| 18 | +// 이제 enum의 타입이 유효한지 검사하기 위해 assert를 사용합니다 |
| 19 | +declare const maybeStringOrNumber: string | number; |
| 20 | +assert(typeof maybeStringOrNumber === "string"); |
| 21 | + |
| 22 | +// TypeScript 3.7에서, 코드 흐름 분석은 |
| 23 | +// 코드가 무엇인지 알아내기 위해 |
| 24 | +// 이런 함수의 종류를 사용할 수 있습니다. |
| 25 | +// 아래의 변수를 호버해보면 - 하나의 문자열 또는 숫자에서 |
| 26 | +// 하나의 문자열로 좁혀진 것을 확인할 수 있습니다. |
| 27 | + |
| 28 | +maybeStringOrNumber; |
| 29 | + |
| 30 | +// 추론된 코드 전체에 있는 타입을 보장하기 위해 |
| 31 | +// 단언 함수를 사용할 수 있습니다. |
| 32 | +// 예를 들어 TypeScript는 위에 assert 선언을 통해 |
| 33 | +// 파라미터에 타입을 추가할 필요 없이 |
| 34 | +// 함수가 숫자를 반환한다는 것을 알고 있습니다. |
| 35 | + |
| 36 | +function multiply(x: any, y: any) { |
| 37 | + assert(typeof x === "number"); |
| 38 | + assert(typeof y === "number"); |
| 39 | + |
| 40 | + return x * y; |
| 41 | +} |
| 42 | + |
| 43 | +// 단언 함수는 타입 가드와 형제입니다 |
| 44 | +// 예시: 타입 가드는 함수를 통해 제어 흐름이 계속 동작할 때, |
| 45 | +// 제어 흐름에 영향을 준다는 것을 제외합니다. |
| 46 | + |
| 47 | +// 예를 들어, enum을 좁히기 위해 |
| 48 | +// 단언 함수를 사용할 수 있습니다: |
| 49 | + |
| 50 | +declare const oneOfFirstFiveNumbers: 1 | 2 | 3 | 4 | 5; |
| 51 | + |
| 52 | +declare function isOdd(param: unknown): asserts param is 1 | 3 | 5; |
| 53 | +declare function isBelowFour(param: unknown): asserts param is 1 | 2 | 3 | 4; |
| 54 | + |
| 55 | +// enum을 다음과 같이 줄여야 합니다: 1 | 3 | 5 |
| 56 | + |
| 57 | +isOdd(oneOfFirstFiveNumbers); |
| 58 | +oneOfFirstFiveNumbers; |
| 59 | + |
| 60 | +// 그리고 enum의 가능한 상태를 다음과 같이 줄입니다: 1 | 3 |
| 61 | + |
| 62 | +isBelowFour(oneOfFirstFiveNumbers); |
| 63 | +oneOfFirstFiveNumbers; |
| 64 | + |
| 65 | +// TypeScript 3.7에서 단언 함수의 기능 중 일부 입문서입니다 |
| 66 | +// - 릴리스 노트를 읽어보면 |
| 67 | +// 더 많은 것을 알아낼 수 있습니다: |
| 68 | +// |
| 69 | +// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ |
0 commit comments