我知道所有javascript都是有效的打字稿,但我想开始将我的javascript转换为打字稿约定。我正在与JS的这个片段作斗争:
if (MyCompany === undefined) {
var MyCompany = {};
}
MyCompany.Uploader = MyCompany.Uploader || {};
MyCompany.Uploader.Core = function (config) {
'use strict';
function build() {
console.log("building");
}
return {
build: build
};
};
var config = {this: "that};
MyCompany.Uploader.Core(config).build(); // outputs building to console
我一直在搞乱多种方法,我觉得我不够亲近。
namespace MyCompany.Uploader {
export var Core = (config:any) => {
function build() {
console.log("building");
}
};
}
let configobj = {here:"there"};
MyCompany.Uploader.Core(configobj).build();
这根本行不通。我似乎无法访问构建功能。我确定这是一个新手的错误。
我得到的错误:属性构建在类型void
上不存在答案 0 :(得分:0)
那是因为你没有将javascript代码的重要部分添加到typescript版本中,而且这是包含build
函数引用的返回对象,它应该是:
namespace MyCompany.Uploader {
export var Core = (config: any) {
function build() {
console.log("building");
}
return {
build: build
}
};
}
let configobj = { here: "there" };
MyCompany.Uploader.Core(configobj).build();
您还可以为配置和返回对象定义接口:
namespace MyCompany.Uploader {
export interface Config {
here: string;
}
export interface Builder {
build: () => void;
}
export var Core = (config: Config): Builder => {
function build() {
console.log(config.here);
}
return {
build: build
}
};
}
let configobj = { here: "there" };
MyCompany.Uploader.Core(configobj).build();