Хотя ваша проблема была решена ранее, я хочу присоединиться к ней, поскольку я думаю, что вы хотите достичь чего-то, что семантически отличается от расширения класса. Хранение служебных функций в классе 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();
}
}
Однако в 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();
}
}