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