首页 > 解决方案 > TypeScript - 为自定义类名使用预定义的名称

问题描述

我们可以使用 TypeScript 中的预定义名称来命名自定义类/接口吗?如果自定义类名与 TypeScript 中的预定义名称冲突,是否存在可能导致错误的用例?

例如 - 我可以创建一个名为 RequestInfo 的自定义类,而 TypeScript 已经有一个 RequestInfo 类型 ->type RequestInfo = Request | string;吗?

标签: typescriptnaming

解决方案


您不能将 TypeScript 中的任何预定义名称用作自定义类/接口/类型。原因是类声明创建了一个构造函数以及一个类型定义。这意味着我可以做这样的事情:

class Hero {}
const myHero: Hero = new Hero();
const somethingElse: Hero & string = '';

因此,当您尝试重新定义预定义类型时,TypeScript 编译器会发出错误,因为类型通常是为类生成的。

但是,如果你想在你的模块中有多个接口声明,TypeScript 将使用声明合并概念,它只是将两个接口合并为一个。

interface Hero { x!: number; }
interface Hero { y!: number; }

推荐阅读