Gre*_*Gum 51 typescript typescript1.6
我有几个实用功能.打包它们然后导入它们的最佳方法是什么?
这就是我想要做的:
import * as util from './util'
export class myClass{
constructor()
{
util.doSomething("test");
}
}
Run Code Online (Sandbox Code Playgroud)
然后在课堂上:
export class Util{
doSomething(val: string){ return val;}
doSomethingElse(val: string{ return val;}
}
Run Code Online (Sandbox Code Playgroud)
我从VS获得的错误消息是"类型util上不存在属性doSomething".
k7s*_*per 89
如果您创建utils.ts包含的文件
export default class Utils {
static doSomething(val: string) { return val; }
static doSomethingElse(val: string) { return val; }
}
Run Code Online (Sandbox Code Playgroud)
那么你可以像这样简化你的客户端代码:
import Utils from './utils'
export class MyClass {
constructor()
{
Utils.doSomething("test");
}
}
Run Code Online (Sandbox Code Playgroud)
Asa*_*din 37
这里有几个问题:
doSomething是一个实例方法import * as util,util表示模块,而不是其中的对象.如果你愿意Util,你应该只导入:
import { Util } from './util'
Run Code Online (Sandbox Code Playgroud)
接下来,Util在最终调用方法之前,应该实例化:
var u = new Util();
u.doSomething("test");
Run Code Online (Sandbox Code Playgroud)
这是你的代码补丁:
import { Util } from './util'
export class MyClass{
constructor()
{
var u = new Util();
u.doSomething("test");
}
}
Run Code Online (Sandbox Code Playgroud)
总而言之,你使用你的工具的方式似乎有些奇怪.这完全是个人观点,但我不会在构造函数中调用"做某事"的方法,即引起副作用.
此外,这些方法Util看起来并不像他们需要在该类中,因为该类不包含它们所依赖的状态.您始终可以从模块导出常规功能.如果您编写了这样的utils模块:
export function doSomething(val: string) { return val; }
export function doSomethingElse(val: string) { return val; }
Run Code Online (Sandbox Code Playgroud)
您将直接导出您的函数并避免实例化麻烦,事实上您的原始代码将按原样正常工作.
替代方式:
导出utils.ts文件中的常量:
export const doSomething = (val: string): any => {
return val;
};
export const doSomethingElse = (val: string): any => {
return val;
};
Run Code Online (Sandbox Code Playgroud)在主*.ts文件中导入并使用此方法:
import { doSomething, doSomethingElse } from './util';
...
let value1 = doSomething('abc');
let value2 = doSomethingElse ('efg');
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
40485 次 |
| 最近记录: |