【发布时间】:2018-04-10 10:25:39
【问题描述】:
我正在尝试将打字稿定义添加到茉莉花匹配器library。
我能够为泛型类型 T 添加匹配器,但现在我只想将匹配器添加到 DOM 元素。
深入研究 jasmine 类型定义代码,我发现了与 ArrayLike 类似的方法(对于 expect 重载,请参见 here,对于 ArrayLikeMatchers,请参见 here)。
所以我创建了一个类似的。
// 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] 类型“Matchers”上不存在属性“toBeChecked”。
唯一的解决方案似乎是在核心 jasmine 库中添加expect 重载之前通用expect(在ArrayLike 重载here 之后)。
但是...这是不可行的:)
关于如何正确实施有效解决方案的任何提示?
【问题讨论】:
标签: typescript jasmine matcher type-definition jasmine-matchers