我的打字稿项目中有一个用 CoffeeScript 编写的依赖项的自定义模块定义文件。
它看起来像下面这样,效果很好:
src/@types/dependency-name.d.ts
exports.scheduledFunctionCrontab = functions.pubsub.schedule('0 11 * * *')
.timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
.onRun((context) => {
console.log('This will be run every day at 11:05 AM Eastern!');
return null;
});
所以我想为这个项目做贡献并提交一个类型定义文件。
我尝试的是:
- npm install -g firebase-tools@9.6.1
declare module 'dependency-name' {
import EventEmitter from 'eventemitter3';
/**
* omitted
*/
interface ICable {
new (channels: Record<string, ISubscription>): ICable;
channels: Record<string, ISubscription>;
channel: (name: string) => ISubscription | undefined;
setChannel: (name: string, channel: ISubscription) => ISubscription;
}
export const Cable: ICable;
}
:index.d.ts
但是,它无法识别添加的 pacakge.json
文件。显示类型定义丢失错误。
我看过 this post 并猜测是这个问题:
<块引用>作为外部模块编写
但是我不明白。有人可以指导我将我的自定义类型(我猜是模块扩充)转换为正确的 "typings": "index.d.ts",
类型定义文件吗?
答案 0 :(得分:1)
我建议直接查看从您链接的帖子中链接的 TypeScript handbook page,因为帖子本身相当陈旧,而且那里的文本副本有点过时。特别是,"types"
现在比 "typings"
中的 package.json
更受欢迎,尽管两者都应该仍然有效。
但是,您和帖子是正确的,问题是环境外部模块(“环境模块”)与非环境模块(“外部模块”)之一。您应该只需要删除环绕文件的 declare module
块,将其内容保留在顶层。这会将您的声明从环境转换为非环境,并且应该可以正常工作。