说我有一个test.ts和一个MY_MODULE.d.ts文件:
MY_MODULE.d.ts:
module MY_MODULE
{
export class Config {
UserId : string;
};
export function Init( config : Config );
}
test.ts:
/// <reference path="MY_MODULE.d.ts" />
MY_MODULE.Init(<MY_MODULE.Config>{ UserId: 'Josh' });
我的问题:是否可以修复定义文件或.ts文件,以便后者中的强制转换是不必要的?
答案 0 :(得分:2)
使用export interface Config
代替export class Config
。
答案 1 :(得分:0)
Typescript将根据对象的签名推断出正确的类型,因此不需要强制转换 将代码复制到操场中,立即拾取了几个编译错误。首先,Init需要实现 其次,Config类没有构造函数 以下代码干净利落地编译:
module MY_MODULE
{
export class Config {
UserId : string;
};
export function Init( config : Config ) {
}
}
var myConfig = new MY_MODULE.Config();
myConfig.UserId = 'Josh'
MY_MODULE.Init(myConfig);
最好为Config定义一个构造函数,如下所示:
module MY_MODULE
{
export class Config {
UserId : string;
constructor(userId : string) {
this.UserId = userId;
}
};
export function Init( config : Config ) {
}
}
MY_MODULE.Init(new MY_MODULE.Config('Josh'));