gpt4 book ai didi

javascript - 命名空间类的 typescript 定义

转载 作者:行者123 更新时间:2023-11-28 07:11:20 24 4
gpt4 key购买 nike

我正在尝试为我编写的 JavaScript 库编写 typescript 定义。该库看起来像:

!function() {
var mylib = {};

mylib.Fruit = function() {
// ...
};
mylib.Fruit.SOME_STATIC_PROP = 1;

}();

源代码由多个串联的文件组成 - 对于这个最小的示例,有一个文件包含前两行,一个包含 Fruit,另一个包含最后一行。

水果.d.ts:

declare module mylib {
class Fruit {
static SOME_STATIC_PROP: number;
}
}

在fruit.js(这又是上面粘贴的代码的中间部分)中,Intellisense 提示:

Type '() => any' is not assignable to type 'typeof Fruit'. Property 'SOME_STATIC_PROP' is missing in type '() => any'.

编辑在我的串联文件中(例如上面粘贴的内容),我没有收到该消息。

如果我将fruit.js更改为类似的内容

function Fruit() { ... }

如果没有 mylib 命名空间,也不会出现错误。

有没有办法避免我的个人“类”文件中出现此错误,或者我应该忽略它们?

最佳答案

In fruit.js (which again is just the middle part of the code pasted above), Intellisense complains

因为这是 JavaScript,错误 Type '() => any' 无法分配给类型 'typeof Fruit'。类型“() => any”中缺少属性“SOME_STATIC_PROP”。 基于变量的推断类型。

解决方案:

或者:

  • .js 文件转换为 .ts,以便您可以使用类型注释类型断言来进行按摩您喜欢的类型
  • 忽略 .js 文件的错误并继续,直到您有时间转换为 .ts

关于javascript - 命名空间类的 typescript 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31279844/

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