TypeScript 0.9.5 - ...args : any[] dead in the water?(查看 Q.d.ts)

标签 typescript q definitelytyped

我希望其中一位 TypeScript 能够参与其中。我是 Definitely Typed 贡献者之一,我一直致力于修复与 Q.d.ts 相关的损坏测试。 .

以下测试在q-tests.ts在 TS 0.9.5 之前工作:

var eventualAdd = Q.promised((a: number, b: number) => a + b);

promised 方法定义如下所示:

export function promised<T>(callback: (...args: any[]) => T): (...args: any[]) => Promise<T>;

但现在我们使用的是 0.9.5,此测试无法编译并因以下错误而失败:

error TS2082: Supplied parameters do not match any signature of call target:
Call signatures of types '(a: number, b: number) => number' and '(...args: any[]) => {}' are incompatible:
Call signature expects 0 or fewer parameters.
error TS2087: Could not select overload for 'call' expression.

我已经尝试调整测试以获得更多洞察力 - 例如通过像这样指定类型:

var eventualAdd = Q.promised<number>((a: number, b: number) => a + b);

但我没有得到更多信息 - 它以类似这样的方式失败:

error TS2082: Supplied parameters do not match any signature of call target:
Call signatures of types '(a: number, b: number) => number' and '(...args: any[]) => number' are incompatible:
Call signature expects 0 or fewer parameters.
error TS2087: Could not select overload for 'call' expression.

任何人都可以提供任何见解吗?我没有发现描述输入方式有任何问题。它看起来是正确的,但它不起作用。我似乎记得在 TS 0.9.5 中,any 现在默认被视为 {}?这会把 ...args: any[] 回调签名从水里吹出来吗?我希望不会!

最佳答案

感谢 IgorBek 在这里回答:https://github.com/borisyankov/DefinitelyTyped/pull/1467

我引用:

“我将参数重写为可选参数。...args: any[] 表示该函数需要 0 个或更多参数。因此即使没有参数它也应该工作。(a: number , b: number) => number 不可转换,因为它需要 2 个参数。所以当你写 (a?: number, b?: number) => number 时,函数需要 0、1 或 2 个参数(或更多,如果我们将剩余参数视为未使用)。”

Ryan Cavanaugh 是正确的,这是重复的。我希望 TypeScript 按照建议进行调整,因此将非可选参数指定为可选参数不再是解决方案。它感觉更像是一种变通方法,而不是合法代码。

关于TypeScript 0.9.5 - ...args : any[] dead in the water?(查看 Q.d.ts),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20728598/

相关文章:

typescript - 带有 ts-loader 的 webpack 线程加载器

javascript - Svelte 仅支持 es6+ 语法。将您的 'compilerOptions.target' 设置为 'es6' 或更高

typescript - 如何使用 vscode api : withProgress 编写异步代码( promise ?)

javascript - Angular 不等待 promise 解决

angular - 如何从 typescript 中的绝对类型访问这些功能?

javascript - 在构造函数内部实例化变量和直接在类 + Typescript/Angular 中实例化变量有什么区别

javascript - 在 render 方法中使用 promise 渲染 React 组件

javascript - 包装在 promise JavaScript 泛型函数中

typescript - 如何将 DefinitelyTyped 中的下划线库与 typescript 一起使用?

javascript - Typescript ts-check javascript 泛型