node.js - 从声明文件中创建类自动间返回类型
问题描述
我们正在使用一个没有类型的外部包,重新创建它是太多的大修。我们确实通过反复试验知道 ie (generateWallet) 的响应,并希望为它们做出声明而不是实现每一个。
我们目前要做的
申报文件
interface ServiceClass {
generateWallet(): Wallet;
}
interface Wallet {
address: string;
privateKey: string;
}
班级
export class Service implements ServiceClass {
constructor() {}
generateWallet(): Wallet {
return externalPackage.generateWallet() // returns any;
}
// We dont want to do this for about hundred different functions
}
想要的输出
import externalPackage from 'external-package';
const externalPackage.generateWallet(); // Shows return type as (Wallet)
解决方案
您可以为没有自己的类型的包添加自己的类型描述文件。创建package_name.d.ts
具有所需类型的文件,如下所示:
/* eslint-disable camelcase */
declare module 'external-package' {
export interface Wallet {
address: string;
privateKey: string;
}
interface ExternalPackage {
generateWallet(): Wallet;
}
export default ExternalPackage;
}
将此文件放入@types
文件夹并将此文件夹添加到 tsconfig.json:
{
"compilerOptions": {
... // other options
"typeRoots": [
"@types",
"node_modules/@types"
]
...
}
推荐阅读
- postgresql - PGPOOL 从节点处于“等待”状态
- google-apps-script - 使用 getSheetByName() 和 ui.prompt() 中插入的 var
- c# - 代表两个参与者互相比赛的足球队的正则表达式
- ruby-on-rails - active admin 首字母大写
- c++ - 将数组转换为向量
- django - 序列化程序无法在模型视图集中的自定义方法中工作,
- python - SIRS 模型与 NetworkX 上的代理
- r - 如何跳转到下一个顶级循环
- google-sheets - 给出结果基数的动态公式
- javascript - 具有可访问性和打印机支持的延迟加载图像