Hyp*_*olf 1 import export typescript
我创建了一个 Tools 类来扩展它的每个类,因为它包含所有类使用的一组函数。
我像这样导出我的课程:
工具.ts
export abstract class Tools {
getRandom(bytes) {
return 21 // Example
}
}
Run Code Online (Sandbox Code Playgroud)
主.ts
import * as Tools from './Tools.ts'
class Main extends Tools { // <-- I get the error from the Tools keyword here
constructor() {
super() // If not, I get an error
}
token() { // Example method
this.getRandom(2)
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
Type 'typeof import("[...]/tools")' is not a constructor function type
Run Code Online (Sandbox Code Playgroud)
我不想new Tools()在每个类中都使用,我想直接调用类的函数。
如何实现导入类并调用它的方法而不在其他类中实例化该类?
尽管您的问题之前已经解决,但我想插话,因为我认为您想要实现与扩展类在语义上不同的东西。将实用函数存储在Tools类中并扩展它会阻止您进一步继承。此外,您可能只想使用一个实用函数,但仍然继承所有函数,这对于 lodash 来说将是可怕的。
您最有可能寻找的是所谓的静态方法。无需类的特定实例即可直接调用的类方法。
// In Tools.ts
export class Tools {
// https://xkcd.com/221/
public static getRandomNumber() {
return 4; // chosen by fair dice roll.
// guaranteed to be random.
}
}
// Somewhere else
import { Tools } from "./Tools";
export class Main {
public doSomething() {
const randomNumber = Tools.getRandomNumber();
}
}
Run Code Online (Sandbox Code Playgroud)
然而,在 TypeScript 中,通常不鼓励导出仅包含静态方法的类,并且这些方法应该封装在它们自己的函数中,您可以显式导入这些函数以减少包大小:
// In Tools.ts
export function getRandomNumber() {
// https://xkcd.com/221/
return 4; // chosen by fair dice roll.
// guaranteed to be random.
}
// Somewhere else
import { getRandomNumber } from "./Tools";
export class Main {
public doSomething() {
const randomNumber = getRandomNumber();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4876 次 |
| 最近记录: |