我正在尝试扩展基本类型(布尔值)以返回自定义类型。如果执行以下操作,则可以轻松地将扩展方法添加到布尔值:
// In Boolean.d.ts
interface Boolean {
ext1(): string;
}
// In Boolean.ts
Boolean.prototype.ext1 = function () {
// Return a string
};
// Elsewhere in code
let x: boolean = true;
x.ext1();
但是,如果我想要一个返回自定义类型的方法(在本例中为AppOption,它是一个枚举),
// In Boolean.d.ts
import { AppOption } from "./AppOption";
interface Boolean {
ext1(): string;
toOption(): AppOption;
}
// In Boolean.ts
Boolean.prototype.ext1 = function () {
// Return a string
};
Boolean.prototype.toOption = function () {
// Return an AppOption value
};
这时,识别出扩展方法中的很少。编译会给两个错误:
“类型'boolean'上不存在属性'ext1'”
和
“类型为'boolean'的属性'toOption'不存在”
到目前为止,我的理解是Boolean.d.ts中的import语句将类型定义转换为模块,这就是导致问题的原因。
有什么方法可以修改上面的内容,以便我可以让扩展方法返回自定义类型?