导入默认名称空间-为什么我会得到“未定义”?

时间:2018-08-10 20:21:41

标签: typescript cocoscreator

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

我创建了 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 ,该文件使用了第一个文件中定义的“映射器”:

import { ex } from './Ex';

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

我得到的是

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

“ Object”类只是一个例子-实际上,我使用的是已经定义的复杂类。我想要实现的是像C#中那样具有“扩展方法”,像这样使用:ex.mapper( instance ).newFunction()

为什么不起作用?

1 个答案:

答案 0 :(得分:1)

return ob as NewClass;

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