Typescript 模块和接口可以有相同的名称吗?
以下似乎是合法的打字脚本:Typescript 模块和接口可以有相同的名称吗?,typescript,Typescript,以下似乎是合法的打字脚本: interface Vec2 { x: number; y: number; } module Vec2 { export function create(x?: number, y?: number) : Vec2 { return {x: x||0, y: y||0}; } export function length(v: Vec2) : number { return Math.sqrt
interface Vec2 {
x: number;
y: number;
}
module Vec2 {
export function create(x?: number, y?: number) : Vec2 {
return {x: x||0, y: y||0};
}
export function length(v: Vec2) : number {
return Math.sqrt(v.x * v.x + v.y * v.y);
}
}
const v:Vec2 = Vec2.create(1, 2);
const len = Vec2.length(v);
这有点整洁,因为您有一个结构类型Vec2和一个在Vec2结构上操作的函数模块。
我想知道这是不是个坏主意。起初,我认为我应该得到一个编译器错误。你可以用一个接口和
- 模块/名称空间
- 变数
- 普通班
酸性测试是:当您使用此功能时,是否会导致您必须思考当您在代码中看到
Vec2
时您的意思?如果确实如此,您应该避免它,因为它不必要地增加了复杂性。它是明显的或不相关的(就像在定义文件中一样)-然后继续使用它。谢谢。我会尝试尝试一下,看看我是否能以某种方式把自己搞糊涂。我发现在结构(接口)上运行的函数很有用,因为它允许我在同一个应用程序中更轻松地使用三个.js向量和cannon.js向量。但是,当函数和数据不属于同一个类时,我永远不知道如何命名。