#typescript
#typescript
Вопрос:
Итак, я пытаюсь создать класс (в TypeScript), который доступен напрямую, без необходимости создавать его новые экземпляры, потому что некоторые классы будут изменять переменные в этом классе, а другие классы должны ссылаться на измененные переменные.
Вот мой код:
class Auth {
isAuthenticated: boolean
constructor(){
this.isAuthenticated = false;
}
login(){
this.isAuthenticated= true;
}
logout(){
this.isAuthenticated = false;
}
isLoggedIn(){
return this.isAuthenticated;
}
}
export default new Auth();
если я удаляю new
из export default new Auth()
, я получаю сообщение об ошибке:
Значение типа ‘typeof Auth’ не вызывается. Вы имели в виду включить «новый»?ts(2348)
Как еще я могу обойти это?
например, я хочу следующий сценарий
Класс A:
import Auth from './auth'
Auth.login()
и другой класс сделал бы это:
import Auth from './auth'
if(Auth.isLoggedIn){
//do this...
}else
{console.log("not logged in");
Если я использую новые экземпляры, значение этого экземпляра всегда будет false .
Ответ №1:
Просто сделайте методы и переменные внутри класса общедоступными и статическими, тогда вам не нужно создавать его экземпляр.
Например
export class Util
{
public static randomFromTo(from: number, to: number): number
{
return Math.floor(Math.random() * (to - from 1) from);
}
}
Затем можно просто выполнить Util.randomFromTo(from, to)
Или используйте шаблон проектирования singleton
class Singleton {
public someMethod() { ... }
}
// Using
const x = Singleton.getInstance();
x.someMethod();