【发布时间】:2016-12-29 09:20:42
【问题描述】:
我正在尝试创建一个类来管理组件,但我真的陷入了联合类型和 TypeScript 类型保护的问题。
例如
namespace Validation {
export function isString(value: any): boolean {
return (typeof value === "string" || value instanceof String);
};
export function isElement(value: any): boolean {
return (value instanceof Element);
};
};
class Component {
constructor(selectorOrElement: string | Element) {
var element: Element = (Validation.isString(selectorOrElement)) ? document.querySelector(selectorOrElement) : selectorOrElement;
if (!Validation.isElement(element)) throw new Error("element is null or not found");
}
}
我尝试使用我自己的类型验证来验证联合类型,但 TypeScript 不允许我使用变量作为有效类型...当我使用 JavaScript 默认 typeof selectorOrElement === "string" 和 element instanceof Element 进行验证时,这有效。
有什么符号或方法可以使用我自己的类型验证吗?
【问题讨论】:
-
请包含代码本身,而不是屏幕截图。屏幕截图不会被搜索引擎索引。
-
@MikeMcCaughan,谢谢。我添加了一些 sn-p
标签: typescript