2016-05-15 102 views
3

我看起来像这样的打字稿类:我可以将函数导入打字稿类文件吗?

class WordService implements IWordService { 

    wordCreatedById: number = 0; 
    wordModifiedById: number = 0; 

    static $inject = [ 
     "$http", 
     "$q", 
     ... 
    ]; 

    constructor(
     public $http: ng.IHttpService, 
     public $q: ng.IQService, 
     ... 
    ) { 

    } 

    wordClear =(): void => { 
     this.word = null; 
     this.wordBase = null; 
    } 

    ... 

} 

我的类文件已经变得很长,现在我所定义的功能越来越多 像wordClear。

有没有什么方法可以将函数移动到另一个文件中,并将它们导入我的课程中 ?

+0

你是问有关导入功能从其他文件或关于部分定义类? – Paarth

+0

您可以从其他文件中导入函数,然后您可以从您的类方法调用这些函数,但这不是处理问题的正确方法EM。大班级被认为是“难闻的气味”(https://en.wikipedia.org/wiki/Code_smell),你应该将这些班级分成更小的班级。 –

回答

8

如果您要求在类定义中使用其他函数,这是实现它的一种方法。让我们把这个utilFunctions.ts(或任何你想调用它。

export function wordClear(obj:{word:any, wordBase:any}/*replace with relevant interface*/) :void { 
    obj.word = null; 
    obj.wordBase = null; 
} 

,然后在类TS文件

import * as utilFunctions from './utilFunctions' 

class WordService implements IWordService { 
    ... 
    wordClear =()=>utilFunctions.wordClear(this); 
} 

或者

import * as utilFunctions from './utilFunctions' 

class WordService implements IWordService { 
    ... 
    public wordClear() { 
     utilFunctions.wordClear(this); 
    } 
} 
相关问题