我有几个实用功能。打包它们然后导入它们的最佳方法是什么?
这就是我想要做的事情:
import * as util from './util'
export class myClass{
constructor()
{
util.doSomething("test");
}
}
然后在课堂上:
export class Util{
doSomething(val: string){ return val;}
doSomethingElse(val: string{ return val;}
}
我从VS获得的错误消息是“类型util上不存在属性doSomething”。
答案 0 :(得分:76)
如果您创建包含
的文件name: "CIFAR10_full"
layer {
name: "cifar"
type: "Data"
top: "data"
top: "label"
data_param {
source: "CIFAR-10/cifar10_train_lmdb"
backend: LMDB
batch_size: 200
}
transform_param {
mirror: true
}
include: { phase: TRAIN }
}
layer {
name: "cifar"
type: "Data"
top: "data"
top: "label"
data_param {
source: "CIFAR-10/cifar10_test_lmdb"
backend: LMDB
batch_size: 100
}
transform_param {
mirror: false
}
include: { phase: TEST }
}
utils.ts
然后您可以像这样简化客户端代码:
export default class Utils {
static doSomething(val: string) { return val; }
static doSomethingElse(val: string) { return val; }
}
答案 1 :(得分:34)
这里有几个问题:
doSomething
是实例方法import * as util
时,util
表示模块,而不是其中的对象。 如果您需要Util
,则应该导入:
import { Util } from './util'
接下来,您应该在最终调用方法之前实例化Util
:
var u = new Util();
u.doSomething("test");
这是你的代码补丁:
import { Util } from './util'
export class MyClass{
constructor()
{
var u = new Util();
u.doSomething("test");
}
}
所有这一切,你使用你的工具的方式似乎有些奇怪。这完全是个人意见,但我不会在构造函数中调用“做某事”的方法,即引起副作用。
此外,Util
中的方法看起来并不像他们需要在该类中,因为该类不包含它们所依赖的状态。您始终可以从模块导出常规功能。如果您编写了这样的utils模块:
export function doSomething(val: string) { return val; }
export function doSomethingElse(val: string) { return val; }
您将直接导出您的函数并避免实例化麻烦,事实上您的原始代码将按原样正常工作。
答案 2 :(得分:0)
或者您可以将其导出为对象文字:
export const Util = {
doSomething(val: string){ return val;},
doSomethingElse(val: string{ return val;}
}
答案 3 :(得分:0)
您还可以创建一个具有导出功能的 util.ts 类
export const formatDateOfBirth =
(dob: string) : string => `${dob.substring(0, 4)}-${dob.substring(4, 6)}-${dob.substring(6, 8)}`;
现在您可以按以下方式导入方法,共享文件夹结构为 src> app> shared ,我在 src> app>书架> rack.component.ts <中调用此导入/ em>文件
import { formatDateOfBirth } from '../shared/utils/util';
public getFormattedDate(dob: string):string{
return formatDateOfBirth(dob);
}
答案 4 :(得分:0)
替代方式:
1)在您的utils.ts文件中导出常量:
export const doSomething = (val: string): any => {
return val;
};
export const doSomethingElse = (val: string): any => {
return val;
};
2)在* .ts主文件中导入并使用此方法:
import { doSomething, doSomethingElse } from './util';
...
let value1 = doSomething('abc');
let value2 = doSomethingElse ('efg');