我不知道如何在TypeScript
中正确定义namespaceResolver
函数。我有以下resolver
功能:
(prefix: string): string => {
if (prefix === "wms") {
return "http://www.opengis.net/wms";
} else {
return null;
}
但是编译器抱怨说:
TS2345:类型为"(前缀:字符串(=>字符串"的参数不是 可分配给类型为"XPathNSResolver"的参数。 财产 类型"(前缀:字符串(=>字符串"中缺少"lookupNamespaceURI"。
如果我在lib.dom.d.ts
中检查实现,lookupNaemspaceURI
的返回值也是string
。所以我不知道我应该如何解决这个问题。
lib.dom.d.ts:
interface XPathNSResolver {
lookupNamespaceURI(prefix: string): string;
}
编辑
这是整个代码:
doc.evaluate("/wms:WMS_Capabilities/wms:Service/wms:Name", doc, (prefix: string): string => {
if (prefix === "wms") {
return "http://www.opengis.net/wms";
} else {
return null;
}
}, XPathResult.STRING_TYPE, null);
好的,所以我想通了。
我首先创建了一个XPathNSReslover
:
private xpathResolver: XPathNSResolver = {
lookupNamespaceURI: prefix => {
if (prefix === "wms") {
return "http://www.opengis.net/wms";
} else {
return null;
}
}
};
然后,我只需在evaluate
方法实现中使用此xpathResolver
:
doc.evaluate("/wms:WMS_Capabilities/wms:Service/wms:Name", doc, this.xpathResolver, XPathResult.STRING_TYPE, null);
对于遇到此问题的任何人,我建议使用"xpath-ts"而不是"xpath"。使用 xpath-ts,可以避免复杂的键入(例如在其他解决方案中(。