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

时间:2018-10-08 05:56:14

标签: typescript

在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中可以正常工作

2 个答案:

答案 0 :(得分:6)

这是3.0到3.1之间的breaking change

  

TypeScript的内置.d.ts库(lib.d.ts及其家族)现在从DOM规范中的Web IDL文件中部分生成。结果,一些特定于供应商的类型已被删除。

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

  

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

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

答案 1 :(得分:0)

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

interface Element {
   msMatchesSelector: any;
}