fontcolor_theme
Deepkit Runtime Types

외부 Type

외부 Class

TypeScript는 기본적으로 Type 정보를 포함하지 않으므로, 다른 패키지에서 import된 Type/Class(@deepkit/type-compiler를 사용하지 않은 경우)는 런타임에 사용할 수 있는 Type 정보가 제공되지 않습니다.

외부 Class에 대한 Type을 annotate하려면 annotateClass를 사용하고, import된 Class가 다른 곳에서 사용되기 전에 이 Function이 애플리케이션의 bootstrap 단계에서 실행되도록 하세요.

import { MyExternalClass } from 'external-package';
import { annotateClass } from '@deepkit/type';

interface AnnotatedClass {
    id: number;
    title: string;
}

annotateClass<AnnotatedClass>(MyExternalClass);

//이제 MyExternalClass의 모든 사용은 AnnotatedClass의 Type을 반환합니다
serialize<MyExternalClass>({...});

//이제 MyExternalClass는 다른 Type에서도 사용할 수 있습니다
interface User {
    id: number;
    clazz: MyExternalClass;
}

이제 MyExternalClass는 serialization Function과 reflection API에서 사용할 수 있습니다.

다음은 generic Class를 annotate하는 방법을 보여줍니다:

import { MyExternalClass } from 'external-package';
import { annotateClass } from '@deepkit/type';

class AnnotatedClass<T> {
    id!: T;
}

annotateClass(ExternalClass, AnnotatedClass);

Import Type

import type 구문은 실제 JavaScript 코드를 import하지 않고 type-checking에만 사용하도록 TypeScript에서 설계되었습니다. 이는 예를 들어 런타임에는 존재하지 않고 컴파일 타임에만 존재하는 패키지의 Type을 사용하고 싶거나, 런타임에 해당 패키지를 실제로 로드하고 싶지 않을 때 유용합니다.

Deepkit은 import type의 취지를 따르며 어떤 런타임 코드도 생성하지 않습니다. 즉, import type을 사용하면 런타임에는 어떠한 Type 정보도 제공되지 않습니다.

English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)