在spec.ts中例如:Dom.spec.ts
describe('matchesSelector', () => {
let result: boolean;
let matchelement: HTMLElement;
it('Matches for the opera browser', () => {
matchelement.matches = matchelement.msMatchesSelector = null;
result = Dom.matches(matchelement, '#match');
expect(result).toBe(true);
});
当在上面的代码中调用 matchelement.msMatchesSelector 中的 msmatchesSelector 时,它会获取 lib.dom.ts 中的特定类型。
当我将打字稿版本升级到 3.0 时,它重现以下错误
spec\dom.spec.ts(304,49): error TS2339: Property 'msMatchesSelector' does not exist on type 'HTMLElement'.
但它在我之前的打字稿版本 2.6.2 中运行良好
这是一个重大改变 https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes3.0 和 3.1 之间:
TypeScript 的内置 .d.ts 库(lib.d.ts 和系列)现在部分由 DOM 规范的 Web IDL 文件生成。因此,一些特定于供应商的类型已被删除。
建议根据需要扩展内置定义:
如果您的运行时保证其中一些名称在运行时可用(例如,对于仅限 IE 的应用程序),请在项目中本地添加声明,例如:
对于 Element.msMatchesSelector,将以下内容添加到本地 dom.ie.d.ts
interface Element {
msMatchesSelector(selectors: string): boolean;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)