본문으로 건너뛰기

선언 참고

이 안내서의 목적은 고품질 정의 파일을 작성하는 방법을 알려주는 것입니다. 이 안내서는 일부 API에 대한 문서와 예시를 보여주고 해당 선언을 작성하는 방법을 설명합니다.

예시는 뒤로 갈수록 복잡도가 대략적으로 증가합니다.

프로퍼티가 있는 객체

문서

전역 변수 myLib에는 인사말을 만드는 makeGreeting 함수와 지금까지 만든 인사말 수를 나타내는 numberOfGreetings 프로퍼티가 있습니다.

코드

ts
let result = myLib.makeGreeting("hello, world");
console.log("The computed greeting is:" + result);
let count = myLib.numberOfGreetings;
ts
let result = myLib.makeGreeting("hello, world");
console.log("The computed greeting is:" + result);
let count = myLib.numberOfGreetings;

선언

declare namespace를 사용하여 점 표기법으로 접근하는 타입이나 값을 묘사합니다.

ts
declare namespace myLib {
function makeGreeting(s: string): string;
let numberOfGreetings: number;
}
ts
declare namespace myLib {
function makeGreeting(s: string): string;
let numberOfGreetings: number;
}

다중 정의된 함수

문서

getWidget 함수는 숫자를 받아 위젯을 반환하거나 문자열을 받아 위젯 배열을 반환합니다.

코드

ts
let x: Widget = getWidget(43);
let arr: Widget[] = getWidget("all of them");
ts
let x: Widget = getWidget(43);
let arr: Widget[] = getWidget("all of them");

선언

ts
declare function getWidget(n: number): Widget;
declare function getWidget(s: string): Widget[];
ts
declare function getWidget(n: number): Widget;
declare function getWidget(s: string): Widget[];

재사용 가능한 타입 (인터페이스)

문서

인사말을 지정할 때 GreetingSettings 객체를 전달해야 합니다. 이 객체에는 다음과 같은 프로퍼티가 있습니다.

  1. 인사말 - 필수 문자열
  2. 기간 - 선택적 시간 길이 (밀리초)
  3. 색상 - 선택적 문자열 (예: '#ff00ff')

코드

ts
greet({
greeting: "hello world",
duration: 4000
});
ts
greet({
greeting: "hello world",
duration: 4000
});

선언

프로퍼티가 있는 타입을 정의하려면 interface를 사용하세요.

ts
interface GreetingSettings {
greeting: string;
duration?: number;
color?: string;
}
declare function greet(setting: GreetingSettings): void;
ts
interface GreetingSettings {
greeting: string;
duration?: number;
color?: string;
}
declare function greet(setting: GreetingSettings): void;

재사용 가능한 타입 (타입 별칭)

문서

인사말이 필요한 곳에서 string, string을 반환하는 함수, Greeter 인스턴스를 전달할 수 있습니다.

코드

ts
function getGreeting() {
return "howdy";
}
class MyGreeter extends Greeter {}
greet("hello");
greet(getGreeting);
greet(new MyGreeter());
ts
function getGreeting() {
return "howdy";
}
class MyGreeter extends Greeter {}
greet("hello");
greet(getGreeting);
greet(new MyGreeter());

선언

타입 별칭을 사용하여 타입에 대한 약칭을 만들 수 있습니다.

ts
type GreetingLike = string | (() => string) | MyGreeter;
declare function greet(g: GreetingLike): void;
ts
type GreetingLike = string | (() => string) | MyGreeter;
declare function greet(g: GreetingLike): void;

타입 구성하기

문서

greeter 객체는 파일에 기록하거나 경고를 표시할 수 있습니다. .log(...)LogOptions을 전달하고 .alert(...)에 경고 옵션을 전달할 수 있습니다.

코드

ts
const g = new Greeter("Hello");
g.log({ verbose: true });
g.alert({ modal: false, title: "Current Greeting" });
ts
const g = new Greeter("Hello");
g.log({ verbose: true });
g.alert({ modal: false, title: "Current Greeting" });

선언

이름공간을 사용하여 타입을 구성합니다.

ts
declare namespace GreetingLib {
interface LogOptions {
verbose?: boolean;
}
interface AlertOptions {
modal: boolean;
title?: string;
color?: string;
}
}
ts
declare namespace GreetingLib {
interface LogOptions {
verbose?: boolean;
}
interface AlertOptions {
modal: boolean;
title?: string;
color?: string;
}
}

하나의 선언에서 중첩된 이름공간을 만들 수도 있습니다.

ts
declare namespace GreetingLib.Options {
// `GreetingLib.Options.Log`를 통해 참조합니다.
interface Log {
verbose?: boolean;
}
interface Alert {
modal: boolean;
title?: string;
color?: string;
}
}
ts
declare namespace GreetingLib.Options {
// `GreetingLib.Options.Log`를 통해 참조합니다.
interface Log {
verbose?: boolean;
}
interface Alert {
modal: boolean;
title?: string;
color?: string;
}
}

클래스

문서

Greeter 객체를 인스턴스화하여 인사를 만들거나 객체에서 확장하여 커스텀 인사를 만들 수 있습니다.

코드

ts
const myGreeter = new Greeter("hello, world");
myGreeter.greeting = "howdy";
myGreeter.showGreeting();
class SpecialGreeter extends Greeter {
constructor() {
super("Very special greetings");
}
}
ts
const myGreeter = new Greeter("hello, world");
myGreeter.greeting = "howdy";
myGreeter.showGreeting();
class SpecialGreeter extends Greeter {
constructor() {
super("Very special greetings");
}
}

선언

declare class를 사용하여 클래스 또는 클래스와 유사한 객체를 묘사합니다. 클래스는 생성자뿐만 아니라 프로퍼티와 메서드도 가질 수 있습니다.

ts
declare class Greeter {
constructor(greeting: string);
greeting: string;
showGreeting(): void;
}
ts
declare class Greeter {
constructor(greeting: string);
greeting: string;
showGreeting(): void;
}

전역 변수

문서

전역 변수 foo는 존재하는 위젯의 수를 포함합니다.

코드

ts
console.log("Half the number of widgets is " + foo / 2);
ts
console.log("Half the number of widgets is " + foo / 2);

선언

declare var를 사용하여 변수를 선언합니다. 변수가 읽기 전용이면 declare const를 사용할 수 있습니다. 변수가 블록 범위인 경우에는 declare let을 사용할 수도 있습니다.

ts
/** 존재하는 위젯의 수 */
declare var foo: number;
ts
/** 존재하는 위젯의 수 */
declare var foo: number;

전역 함수

문서

문자열로 greet 함수를 호출하여 사용자에게 인사말을 표시할 수 있습니다.

코드

ts
greet("hello, world");
ts
greet("hello, world");

선언

함수를 선언하려면 declare function을 사용하세요.

ts
declare function greet(greeting: string): void;
ts
declare function greet(greeting: string): void;