Skip to content

Latest commit

Β 

History

History
59 lines (51 loc) Β· 2.1 KB

File metadata and controls

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

/*~ 클래슀 λͺ¨λ“ˆμ„ μœ„ν•œ λͺ¨λ“ˆ ν…œν”Œλ¦Ώ μž…λ‹ˆλ‹€.
 *~ 이름을 index.d.ts둜 λ³€κ²½ν•˜κ³ , λͺ¨λ“ˆ μ΄λ¦„μ˜ 폴더에 λ°°μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
 *~ 예λ₯Ό λ“€μ–΄, "super-greeter" νŒŒμΌμ„ μž‘μ„±ν•˜λŠ” 경우
 *~ 이 νŒŒμΌμ€ 'super-greeter/index.d.ts'κ°€ λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
 */

// ES6 λͺ¨λ“ˆμ€ 직접 클래슀 객체λ₯Ό exportν•  수 μ—†μŠ΅λ‹ˆλ‹€.
// 이 νŒŒμΌμ€ CommonJS-style을 μ‚¬μš©ν•΄μ„œ import ν•΄μ•Ό ν•©λ‹ˆλ‹€.
//   import x = require('[~THE MODULE~]');
//
// λ˜ν•œ, --allowSyntheticDefaultImports λ‚˜
// --esModuleInterop μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•œλ‹€λ©΄,
// default import둜 importν•  수 μžˆμŠ΅λ‹ˆλ‹€:
//   import x from '[~THE MODULE~]';
//
// ES6 λͺ¨λ“ˆμ˜ μ œν•œμ— λŒ€ν•œ 일반적인 ν•΄κ²° 방법을 μ΄ν•΄ν•˜λ €λ©΄
// https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require
// μ—μ„œ TypeScript λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

/*~ μ „μ—­ λ³€μˆ˜ 'myClassLib'을 λ…ΈμΆœν•˜λŠ” UMD λͺ¨λ“ˆμ„
 *~ λͺ¨λ“ˆ λ‘œλ” ν™˜κ²½ μ™ΈλΆ€μ—μ„œ λ‘œλ“œν•˜λ €λ©΄, μ—¬κΈ°μ—μ„œ μ „μ—­μœΌλ‘œ μ„ μ–Έν•˜μ„Έμš”.
 *~ 그렇지 μ•ŠμœΌλ©΄, 이 선언을 μ œκ±°ν•˜μ„Έμš”.
 */
export as namespace myClassLib;

/*~ 이 선언은 클래슀 μƒμ„±μž ν•¨μˆ˜λ₯Ό
 *~ νŒŒμΌμ—μ„œ export된 객체둜 μ§€μ •ν•©λ‹ˆλ‹€.
 */
export = MyClass;

/*~ 이 ν΄λž˜μŠ€μ—μ„œ λͺ¨λ“ˆ λ©”μ„œλ“œμ™€ ν”„λ‘œνΌν‹°λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. */
declare class MyClass {
    constructor(someParam?: string);

    someProperty: string[];

    myMethod(opts: MyClass.MyClassMethodOptions): number;
}

/*~ λͺ¨λ“ˆμ—μ„œ νƒ€μž…μ„ λ…ΈμΆœν•˜λ €λ©΄
 *~ 이 블둝 μ•ˆμ— μœ„μΉ˜μ‹œν‚€μ„Έμš”.
 *~
 *~ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό 포함할 경우,
 *~ --esModuleInterop 이 μ„€μ •λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄,
 *~ λͺ¨λ“ˆμ„ λ„€μž„ 슀페이슀 객체둜 잘λͺ» import ν•  수 μžˆμŠ΅λ‹ˆλ‹€:
 *~   import * as x from '[~THE MODULE~]'; // 였λ₯˜! μ΄λ ‡κ²Œ ν•˜μ§€ λ§ˆμ„Έμš”!
 */
declare namespace MyClass {
    export interface MyClassMethodOptions {
        width?: number;
        height?: number;
    }
}