| title | layout | permalink | oneline |
|---|---|---|---|
Literal Types |
docs |
/docs/handbook/literal-types.html |
Using literal types with TypeScript |
리ν°λ΄ νμ
μ μ§ν© νμ
μ λ³΄λ€ κ΅¬μ²΄μ μΈ νμ νμ
μ
λλ€.
μ΄κ²μ΄ μλ―Ένλ λ°λ νμ
μμ€ν
μμμ "Hello World"λ stringμ΄μ§λ§, stringμ "Hello World"κ° μλλ κ²μ
λλ€.
μ€λλ TypeScriptμλ λ¬Έμμ΄κ³Ό μ«μ, λ κ°μ§ 리ν°λ΄ νμ μ΄ μλλ° μ΄λ₯Ό μ¬μ©νλ©΄ λ¬Έμμ΄μ΄λ μ«μμ μ νν κ°μ μ§μ ν μ μμ΅λλ€.
var λλ letμΌλ‘ λ³μλ₯Ό μ μΈν κ²½μ° μ΄ λ³μμ κ°μ΄ λ³κ²½λ κ°λ₯μ±μ΄ μμμ μ»΄νμΌλ¬μκ² μ립λλ€.
λ°λ©΄, constλ‘ λ³μλ₯Ό μ μΈνκ² λλ©΄ TypeScriptμκ² μ΄ κ°μ²΄λ μ λ λ³κ²½λμ§ μμμ μ립λλ€.
// constλ₯Ό μ¬μ©νμ¬ λ³μ helloWorldκ°
// μ λ λ³κ²½λμ§ μμμ 보μ₯ν©λλ€.
// λ°λΌμ, TypeScriptλ λ¬Έμμ΄μ΄ μλ "Hello World"λ‘ νμ
μ μ ν©λλ€.
const helloWorld = "Hello World";
// λ°λ©΄, letμ λ³κ²½λ μ μμΌλ―λ‘ μ»΄νμΌλ¬λ λ¬Έμμ΄μ΄λΌκ³ μ μΈν κ²μ
λλ€.
let hiWorld = "Hi World";무νν μμ μ μ¬μ μΌμ΄μ€λ€ (λ¬Έμμ΄ κ°μ κ²½μ°μ μκ° λ¬΄νλ)μ μ νν μμ μ μ¬μ μΌμ΄μ€ (helloWorldμ κ²½μ°: 1κ°)λ‘ μ€μ¬λκ°λ κ²μ νμ
μ’νκΈ° (narrowing)λΌ νλ€.
μ€μ λ‘ λ¬Έμμ΄ λ¦¬ν°λ΄ νμ μ μ λμΈ νμ , νμ κ°λ κ·Έλ¦¬κ³ νμ λ³μΉκ³Ό μ κ²°ν©λ©λλ€. μ΄λ° κΈ°λ₯μ ν¨κ» μ¬μ©νμ¬ λ¬Έμμ΄λ‘ enumκ³Ό λΉμ·ν ννλ₯Ό κ°μΆ μ μμ΅λλ€.
// @errors: 2345
type Easing = "ease-in" | "ease-out" | "ease-in-out";
class UIElement {
animate(dx: number, dy: number, easing: Easing) {
if (easing === "ease-in") {
// ...
} else if (easing === "ease-out") {
} else if (easing === "ease-in-out") {
} else {
// νμ§λ§ λκ΅°κ°κ° νμ
μ 무μνκ² λλ€λ©΄
// μ΄κ³³μ λλ¬νκ² λ μ μμ΅λλ€.
}
}
}
let button = new UIElement();
button.animate(0, 0, "ease-in");
button.animate(0, 0, "uneasy");νμ©λ μΈ κ°μ λ¬Έμμ΄μ΄ μλ λ€λ₯Έ λ¬Έμμ΄μ μ¬μ©νκ² λλ©΄ μ€λ₯κ° λ°μν©λλ€.
'"uneasy"' νμ
μ '"ease-in" | "ease-out" | "ease-in-out"' νμ
μ λ§€κ° λ³μμ ν λΉν μ μμ΅λλ€.
λ¬Έμμ΄ λ¦¬ν°λ΄ νμ μ μ€λ²λ‘λλ₯Ό ꡬλ³νλ κ²κ³Ό λμΌν λ°©λ²μΌλ‘ μ¬μ©λ μ μμ΅λλ€:
function createElement(tagName: "img"): HTMLImageElement;
function createElement(tagName: "input"): HTMLInputElement;
// ... μΆκ°μ μΈ μ€λ³΅ μ μλ€ ...
function createElement(tagName: string): Element {
// ... μ¬κΈ°μ λ‘μ§ μΆκ° ...
}TypeScriptμλ μμ λ¬Έμμ΄ λ¦¬ν°λ΄κ³Ό κ°μ μν μ νλ μ«μν 리ν°λ΄ νμ λ μμ΅λλ€.
function rollDice(): 1 | 2 | 3 | 4 | 5 | 6 {
return (Math.floor(Math.random() * 6) + 1) as 1 | 2 | 3 | 4 | 5 | 6;
}
const result = rollDice();μ΄λ μ£Όλ‘ μ€μ κ°μ μ€λͺ ν λ μ¬μ©λ©λλ€:
/** loc/lat μ’νμ μ§λλ₯Ό μμ±ν©λλ€. */
declare function setupMap(config: MapConfig): void;
// ---μλ΅---
interface MapConfig {
lng: number;
lat: number;
tileSize: 8 | 16 | 32;
}
setupMap({ lng: -73.935242, lat: 40.73061, tileSize: 16 });