【发布时间】:2017-03-07 08:13:59
【问题描述】:
我正在将 JavaScript 项目迁移到 TypeScript。
在 TS 中使用诸如 URL 之类的节点模块给我带来了一些麻烦:
import nodeUrl = require('url');
// ...
// this worked fine in JS
nodeUrl.format({
// just for demonstration
x: this.getX(someObj),
y: this.getY(someObj)
});
结果:
类型“{}”不可分配给类型“字符串”
这是由于该模块功能的定义。 来自@types/node/index.d.ts:
declare module "url" {
export interface Url {
href?: string;
protocol?: string;
auth?: string;
hostname?: string;
port?: string;
host?: string;
pathname?: string;
search?: string;
query?: string | any;
slashes?: boolean;
hash?: string;
path?: string;
}
export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url;
export function format(url: Url): string;
export function resolve(from: string, to: string): string;
}
我的问题是如何避免/修复此错误不更改声明文件?
【问题讨论】:
-
你想做什么,让
format接受任意键?我也许可以回答这个问题。 -
我希望编译器忽略我将 JSON 对象传递给需要
Url对象的format方法这一事实。或者将我的 JSON convert 转换为Url对象的方法(取决于哪种方法更清洁/更容易)。
标签: node.js typescript typescript-typings