gpt4 book ai didi

typescript - 为第三方库创建 typescript .d.ts

转载 作者:行者123 更新时间:2023-12-04 13:03:05 24 4
gpt4 key购买 nike

我正在使用 npm 中的一个简单的第三方库,卡方测试 ( https://www.npmjs.com/package/chi-squared-test )。它以(我认为是)commonjs 风格导出一个(匿名)函数:

module.exports = function(observations, expectations, degreesOfFreedomReduction) { ... }

该函数返回一个具有几个属性的对象,其中对我来说最有趣的是命名为“概率”。我使用“npm i --save chi-squared-test”安装了它。我正在使用 angular 4 的组件。我可以在我的 component.ts 文件中使用带有此导入语句的导出函数:
import * as chiSquaredTest from 'chi-squared-test';

该函数的使用如下所示:
const expected: number[] = <omitted calculation>;
const actual: number[] = <omitted calculation>;
const chiSquaredResult: IChiSquaredResult =
chiSquaredTest(actual, expected, 1);

我一直在尝试为这个第三方库创建一个 .d.ts 文件,所以我会有智能感知(在 Visual Studio Code 中,如果这很重要)。我尝试了许多变体,但要么出现编译错误,要么没有获得智能感知,也没有迹象表明 typescript 正在关注该文件。我最近的尝试是在 src 目录下的 @types/chi-squared-test 目录下创建一个文件“index.d.ts”。
import { IChiSquaredResult } from './IChiSquaredResult';
export default function chiSquaredTest(
actual: number[],
expected: number[],
degreesOfFreedomAdjustment: number): IChiSquaredResult;

文件 IChiSquaredResult 有一个返回类型的定义,它只是一个接口(interface),带有一个称为“概率”的数字属性。这个 .d.ts 文件放在项目目录结构中时似乎被忽略了。

如果我将目录和文件移动到 node_modules/@types 目录,tsc 会注意它,但没有帮助。它报告,“错误 TS2349:无法调用类型缺少调用签名的表达式。类型 'typeof”/home/jrv/Documents/projects/20171130 ObaCalculator/ObaCalc/node_modules/@types/chi-squar...' 没有兼容的调用签名。”似乎 tsc 正在查找 .d.ts 文件,但没有将我的类型定义链接到库返回的匿名函数导出。tsc 和智能感知也没有描述他们认为的类型“chiSquaredTest “是,只是我的使用与签名不匹配。当我右键单击时,“转到类型定义”它会转到我的 .d.ts 文件中的导出。

我也试过导入为
import chiSquaredTest = require( 'chi-squared-test' );

具有相似的结果。与我正在使用的库一样,如何将类型定义绑定(bind)到匿名函数导出?代码本身工作正常,但我无法将 @types 绑定(bind)到导入的函数。

最佳答案

我在那里是 97.44%。在我的 .d.ts 文件中,我应该使用:

import { IChiSquaredResult } from './IChiSquaredResult';
declare function chiSquaredTest(actual: number[], expected: number[], degreesOfFreedomAdjustment: number): IChiSquaredResult;
export = chiSquaredTest;

我将它与第二个导入样式结合使用。我怀疑我可以将 IChiSquaredResult 内部移动到 .d.ts 文件,如下所示: Create d.ts file for existing library exporting function ,我无法在本地保存 .d.ts 文件是一个小问题。

关于typescript - 为第三方库创建 typescript .d.ts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393529/

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