gpt4 book ai didi

typescript - 模块和接口(interface)可以同名吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:06 25 4
gpt4 key购买 nike

以下似乎是合法的 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(v.x * v.x + v.y * v.y);
}
}

const v:Vec2 = Vec2.create(1, 2);
const len = Vec2.length(v);

这有点简洁,因为您有一个结构类型的 Vec2 和一个在 Vec2 结构上运行的函数模块。我想知道这是否是个坏主意。最初我认为我应该得到一个编译器错误。

最佳答案

可以使用一个界面来做到这一点并且...

  • 模块/命名空间
  • 一个变量
  • 一个环境类

如果您尝试以一种会导致编译器危险的方式执行此操作,例如使用接口(interface)和类(即它无法推断出您的意思),编译器实际上会警告您。

在某些情况下,使用这个技巧很有意义,它通常用于定义文件中,接口(interface)与同名变量配对。

酸性测试是:当您使用此功能时,当您在代码中看到 Vec2 时,是否会导致您不得不思考您的意思?如果是这样,您应该避免它,因为它会不必要地增加复杂性。它是显而易见的还是无关紧要的(因为它在定义文件中)- 然后继续使用它。

关于typescript - 模块和接口(interface)可以同名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33858536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com