导入默认命名空间 - 为什么我得到 "undefined"?

Importing a default namespace - why am I getting "undefined"?

我尝试学习打字稿 - 迈出第一步 :)。这是我的问题。

我创建了File1.ts如下:

export namespace ex {
    export var mapper = ( ob : Object ) : NewClass {
        return ob as NewClass;
    };

    export class NewClass extends Object {
        public getSomething() : number {
            return 2;
        }
    };
}

然后,我创建了 File2.ts,它使用第一个文件中定义的 "mapper":

import { ex } from './Ex';

var a : Object = myAlreadyExistingObject;
console.log( ex.mapper( a ).getSomething() );

我得到的:

错误:类型错误:File1_1.ex.mapper(a).getSomething 不是函数。

"Object" class 只是一个例子——实际上我使用的是一个已经定义的复杂 class。我想要实现的是像在 C# 中那样使用 "extension methods",像这样使用它:ex.mapper( instance ).newFunction()

为什么不起作用?

return ob as NewClass;

TypeScript 中的类型断言不会导致运行时更改。如果 ob 之前没有 getSomething 方法,那么此函数的 return 值也不会,您将得到描述的错误。