返回自定义类型的Typescript扩展方法

时间:2019-10-09 09:18:43

标签: typescript module type-definition

我正在尝试扩展基本类型(布尔值)以返回自定义类型。如果执行以下操作,则可以轻松地将扩展方法添加到布尔值:

// 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语句将类型定义转换为模块,这就是导致问题的原因。

有什么方法可以修改上面的内容,以便我可以让扩展方法返回自定义类型?

0 个答案:

没有答案