Как экспортировать экземпляр класса в Typescript - PullRequest
0 голосов
/ 24 января 2019

Я создаю библиотеку TS и хотел бы экспортировать экземпляр класса, я намерен использовать его как одноэлементное приложение в приложении-потребителе.

Сейчас у меня следующая структура:

index.ts

export { Foo } from './my-class';

foo.ts

export class Foo {
  functionA() {}
}

Затем я встраиваю в формат UMD, используя webpack и babel, и в другом приложении (Angular) я могу импортировать в свой класс, создать его экземпляр и использовать его соответствующим образом.

import { Foo } from 'foo';

private foo = new Foo();

const x = foo.functionA();

Есть ли способ вернуть инстанцированный экземпляр моего класса или я думаю об этом неправильно?

То есть вместо того, чтобы делать new Foo(), импортированный Foo фактически уже будет экземпляром?

Спасибо

UPDATE Я должен был упомянуть, я экспортирую другие вещи, такие как интерфейсы, так что я не думаю, что экспорт классов по умолчанию будет правильным путем? - см. здесь

Ответы [ 4 ]

0 голосов
/ 24 января 2019

Можно экспортировать экземпляр класса Members.

Экспортируйте экземпляр класса следующим образом: export const playerRoutes = new Routes

Экспортируйте класс так: export class player

0 голосов
/ 24 января 2019

Вы можете контролировать то, что вы возвращаете, вот так:

// Export the named class directly
export class Foo { }

// Export the named class indirectly
class Bar { }
export { Bar }

// Export an instance of the class directly
export const foo = new Foo();

// Export an instance of the class indirectly
const bar = new Bar();
export { bar };

Вот ссылка TypeScript Playground , показывающая компиляцию кода и созданный JavaScript.

Официальная документация TypeScript Handbook для экспорта (и импорта, и реэкспорта): https://www.typescriptlang.org/docs/handbook/modules.html#export

Документация MDN (любезно предоставлено jo_va): https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export

И вот руководство Басарата для них:https://basarat.gitbooks.io/typescript/docs/project/modules.html

0 голосов
/ 24 января 2019

Если вы хотите использовать только синглтон, вам следует придерживаться соглашения об одноэлементном режиме

  export class Foo {
    private static _instance = new Foo();
    private constructor() {

    }

    static get instance() {
      return this._instance;
    }

  }

  export const foo = Foo.instance;
0 голосов
/ 24 января 2019

Да, это вполне возможно, и это стандартный способ сделать это также в TS.

export default new Foo();

Если вы хотите импортировать не только этот экземпляр, но и интерфейсы, вы должны экспортироватьсинглтон как это:

export const foo = new Foo();

Вы можете найти export документ здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...