在TypeScript中扩展功能

10 浏览
0 Comments

在TypeScript中扩展功能

我目前正在学习TypeScript,并且想知道如何向现有对象添加功能。假设我想为String对象添加一个Foo的实现。在JavaScript中,我会这样做:

String.prototype.Foo = function() {
    // DO THIS...
}

了解到TypeScript的类、接口和模块是开放式的,我尝试了以下方法,但没有成功:

1. 引用JavaScript实现到TypeScript中

JavaScript:
String.prototype.Foo = function() {
    // DO THIS...
}
TypeScript:
var x = "Hello World";
x.Foo(); //ERROR, Method does not exist

2. 扩展接口

interface String {
    Foo(): number;
}
var x = "Hello World";
x.Foo(); //存在接口但没有实现

3. 扩展类

class String {
    Foo(): number {
        return 0;
    }
}
// ERROR: Duplicate identifier 'String'

从这些结果可以看出,到目前为止,我能够通过接口合约添加方法,但没有实现,那么,我该如何定义和实现作为现有String类的一部分的Foo方法呢?

0