typescript - 导入默认命名空间 - 为什么我得到“未定义”?
问题描述
我尝试学习打字稿 - 做一些第一步:)。这是我的问题。
我创建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() );
我得到什么:
错误:TypeError:File1_1.ex.mapper(a).getSomething 不是函数。
“对象”类只是一个例子——实际上我正在使用一个已经定义的复杂类。我想要实现的是拥有像 C# 中的“扩展方法”,像这样使用它:ex.mapper( instance ).newFunction()
为什么它不起作用?
解决方案
return ob as NewClass;
TypeScript 中的类型断言不会导致运行时更改。如果ob
之前没有getSomething
方法,那么这个函数的返回值也不会,你会得到描述的错误。
推荐阅读
- python-2.7 - Apache Beam 在 Google Dataflow 工作器上的“process_outputs”期间出现令人困惑的错误
- git - Git 没有从 master 看到我的分支,如何取回它?
- openshift - 带有运行 Java > 8 的图像的 fabric8 maven 插件配置
- python - 使用 Python 编辑大型 Excel 文件
- json - Angular - 将json文件分配给类的问题
- botframework - Microsoft BotBuilder Azure OAuth 身份验证 ConnectionSettingName 值
- javascript - 为数据库构建 Web 界面
- python - AttributeError:“dict”对象没有属性“is_active”(PyMongo 和 Flask)
- web - 每个浏览器的 XMLHttpRequest 实现是否不同?
- python - 将字符串内的字符串数组转换为python列表