如何构建实用程序类

时间:2015-09-25 20:38:33

标签: typescript typescript1.6

我有几个实用功能。打包它们然后导入它们的最佳方法是什么?

这就是我想要做的事情:

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”。

5 个答案:

答案 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)

这里有几个问题:

  1. 您没有实例化任何内容,doSomething是实例方法
  2. 执行import * as util时,util表示模块,而不是其中的对象。
  3. 如果您需要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');