我正在尝试将 typescript 定义添加到 jasmine matcher library中。
我能够为泛型类型添加匹配器,T
但现在我只想将匹配器添加到 DOM 元素。
深入研究 jasmine 类型定义代码,我发现了一种类似的方法ArrayLike
(参见这里的expect
重载和这里的ArrayLikeMatchers
)。
所以我创建了一个类似的。
// Overload the expect
declare function expect<T extends HTMLElement>(actual: T): jasmine.DOMMatchers<T>;
declare namespace jasmine {
// Augment the standard matchers. This WORKS!
interface Matchers<T> {
toBeExtensible(): boolean;
toBeFrozen(): boolean;
toBeSealed(): boolean;
// ... other
}
// The matchers for DOM elements. This is NOT working!
interface DOMMatchers<T> extends Matchers<T> {
toBeChecked(): boolean;
toBeDisabled(): boolean;
}
}
但是,不工作:(
给定以下代码:
const div = document.createElement("div");
expect(div).toBeChecked();
类型检查器给了我错误:
[js]“匹配器”类型上不存在属性“toBeChecked”。
唯一的解决方案似乎是在核心 jasmine 库中的泛型之前(在此处重载之后)添加expect
重载。expect
ArrayLike
但是......这是不可行的:)
关于如何正确实施有效解决方案的任何提示?