Skip to content

Latest commit

Β 

History

History
64 lines (54 loc) Β· 2.24 KB

File metadata and controls

64 lines (54 loc) Β· 2.24 KB
// Type definitions for [~라이브러리 이름~] [~선택적 버전 숫자~]
// Project: [~ν”„λ‘œμ νŠΈ 이름~]
// Definitions by: [~λ‚΄ 이름~] <[~λ‚΄ URL~]>

/*~ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ 호좜 κ°€λŠ₯ν•˜λ‹€λ©΄ (예. myLib(3)처럼 호좜 κ°€λŠ₯ν•˜λ‹€λ©΄)
 *~ 여기에 호좜 μ‹œκ·Έλ‹ˆμ²˜λ₯Ό ν¬ν•¨ν•˜μ„Έμš”.
 *~ κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄, 이 μ„Ήμ…˜μ€ μ‚­μ œν•˜μ„Έμš”.
 */
declare function myLib(a: string): string;
declare function myLib(a: number): number;

/*~ 라이브러리의 이름이 μœ νš¨ν•œ νƒ€μž… μ΄λ¦„μœΌλ‘œ μ‚¬μš©ν•˜κ³  μ‹ΆμœΌλ©΄,
 *~ μ—¬κΈ°μ„œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
 *~
 *~ 예λ₯Ό λ“€μ–΄, 'var x: myLib'; 처럼 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
 *~ ν•˜μ§€λ§Œ 이게 μ‹€μ œλ‘œ 의미 μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”! κ·Έλ ‡μ§€ μ•Šλ‹€λ©΄,
 *~ ν•΄λ‹Ή 선언을 μ‚­μ œν•˜κ³  μ•„λž˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€ μ•ˆμ— νƒ€μž…μ„ μΆ”κ°€ν•˜μ„Έμš”.
 */
interface myLib {
    name: string;
    length: number;
    extras?: string[];
}

/*~ μ „μ—­ λ³€μˆ˜μ— export된 ν”„λ‘œνΌν‹°λ₯Ό λΌμ΄λΈŒλŸ¬λ¦¬κ°€ κ°–κ³  μžˆλ‹€λ©΄,
 *~ 이곳에 μœ„μΉ˜μ‹œν‚€μ„Έμš”.
 *~ 여기에도 νƒ€μž… (μΈν„°νŽ˜μ΄μŠ€μ™€ νƒ€μž… 별칭)을 μœ„μΉ˜μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.
 */
declare namespace myLib {
    //~ 'myLib.timeout = 50;' 라고 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    let timeout: number;

    //~ 'myLib.version'에 μ ‘κ·Όν•  수 μžˆμ§€λ§Œ, μˆ˜μ •ν•  순 μ—†μŠ΅λ‹ˆλ‹€.
    const version: string;

    //~ 'let c = new myLib.Cat(42)' λ˜λŠ” μ°Έμ‘° (예. 'function f(c: myLib.Cat) { ... }) λ₯Ό 톡해
    //~ 클래슀λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€
    class Cat {
        constructor(n: number);

        //~ 'Cat' μΈμŠ€ν„΄μŠ€μ—μ„œ 'c.age'λ₯Ό 읽을 수 μžˆμŠ΅λ‹ˆλ‹€
        readonly age: number;

        //~ 'Cat' μΈμŠ€ν„΄μŠ€μ—μ„œ 'c.purr()'λ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.
        purr(): void;
    }

    //~ λ‹€μŒκ³Ό 같이 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    //~   'var s: myLib.CatSettings = { weight: 5, name: "Maru" };'
    interface CatSettings {
        weight: number;
        name: string;
        tailLength?: number;
    }

    //~ 'const v: myLib.VetID = 42;'라고 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    //~  λ˜λŠ” 'const v: myLib.VetID = "bob";'
    type VetID = string | number;

    //~ 'myLib.checkCat(c)' λ‚˜ 'myLib.checkCat(c, v);'을 ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    function checkCat(c: Cat, s?: VetID);
}