fontcolor_theme
Deepkit Runtime Types

外部类型

外部类

由于 TypeScript 默认不包含类型信息,从其他包导入的类型/类(未使用 @deepkit/type-compiler 的)将无法获得类型信息。

要为外部类注解类型,请使用 annotateClass,并确保该函数在应用程序的引导阶段执行,在导入的类被用于其他地方之前。

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

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

annotateClass<AnnotatedClass>(MyExternalClass);

//现在所有对 MyExternalClass 的使用都会返回 AnnotatedClass 的类型
serialize<MyExternalClass>({...});

//MyExternalClass 现在也可以用于其他类型中
interface User {
    id: number;
    clazz: MyExternalClass;
}

现在可以在序列化函数和反射 API 中使用 MyExternalClass

以下演示如何为泛型类添加注解:

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

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

annotateClass(ExternalClass, AnnotatedClass);

导入类型

TypeScript 设计的 import type 语法可避免导入实际的 JavaScript 代码,仅用于类型检查。这在以下情况很有用:当你想使用一个仅在编译时可用、运行时不可用的包中的类型,或者你不想在运行时实际加载该包时。

Deepkit 遵循 import type 的理念,不会生成任何运行时代码。这意味着如果你使用 import type,在运行时将无法获得类型信息。

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