[英]Convert Namespaced Javascript Functions to Typescript
我知道所有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類型上不存在屬性構建
這是因為您沒有將JavaScript代碼的重要部分添加到打字稿版本中,而這是包含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();
您還可以為config和return對象定義接口:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.