lib.dom.ts 文件中的最新打字稿中断性更改



In 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 时,它会在 lib.dom.ts 中获取特定类型。 当我将打字稿版本升级到 3.0 时,它会重现以下错误

specdom.spec.ts(304,49): error TS2339: Property 'msMatchesSelector' does not exist on type 'HTMLElement'.

但它在我以前的打字稿版本 2.6.2 中工作正常

这是 3.0 和 3.1 之间的重大更改:

TypeScript 的内置 .d.ts 库(lib.d.ts 和 family(现在部分由 DOM 规范中的 Web IDL 文件生成。因此,已删除某些特定于供应商的类型。

建议根据需要扩展内置定义:

如果您的运行时保证其中一些名称在运行时可用(例如,对于仅限 IE 的应用程序(,请在项目中本地添加声明,例如: 对于 Element.msMatchesSelector,将以下内容添加到本地 dom.ie.d.ts

interface Element {
msMatchesSelector(selectors: string): boolean;
}

您也可以在文件顶部使用这些简单的代码

interface Element {
msMatchesSelector: any;
}

最新更新