Size: a a a

TypeScript — русскоговорящее сообщество

2020 April 24

S

Sergey in TypeScript — русскоговорящее сообщество
Привет. У меня вопрос по файловой структуре проекта. Есть какие-то лучшие практики по тому, где хранить типы и интерфейсы в рект приложении. Интерфейсы сейчас храню в файлах компонента, типы в корне в d.ts файле, но что-то мне подсказывает, что это не лучший подход
источник

k

khok in TypeScript — русскоговорящее сообщество
Sergey
Привет. У меня вопрос по файловой структуре проекта. Есть какие-то лучшие практики по тому, где хранить типы и интерфейсы в рект приложении. Интерфейсы сейчас храню в файлах компонента, типы в корне в d.ts файле, но что-то мне подсказывает, что это не лучший подход
у меня вот чисто для интерфейсов есть отдельная папка typings в корне папки исходников специально для d.ts файлов.
Интерфейсы объявляю внутри модулей, т.е:
declare module "my-cool-interfaces" {
   export interface SuperInterface {
        ...
}
чтобы импортить их, не прописывая полный путь к d.ts файлу
источник

S

Sergey in TypeScript — русскоговорящее сообщество
khok
у меня вот чисто для интерфейсов есть отдельная папка typings в корне папки исходников специально для d.ts файлов.
Интерфейсы объявляю внутри модулей, т.е:
declare module "my-cool-interfaces" {
   export interface SuperInterface {
        ...
}
чтобы импортить их, не прописывая полный путь к d.ts файлу
спасибо
источник

D

Dmitry in TypeScript — русскоговорящее сообщество
Здравствуйте! Есть объект item c массивом subs внутри.
Как мне отфильтровать объекты внутри subs и вернуть изначальный item?
Что-то вроде:
item.subs = item.subs.filter(s => s.id !== id);
Но это, понятное дело не работает. Спасибо!
источник

ТФ

Татьяна Фомина in TypeScript — русскоговорящее сообщество
Dmitry
Здравствуйте! Есть объект item c массивом subs внутри.
Как мне отфильтровать объекты внутри subs и вернуть изначальный item?
Что-то вроде:
item.subs = item.subs.filter(s => s.id !== id);
Но это, понятное дело не работает. Спасибо!
const newItem = {...item, subs:  item.subs.filter(s => s.id !== id)};
источник

D

Dmitry in TypeScript — русскоговорящее сообщество
Татьяна Фомина
const newItem = {...item, subs:  item.subs.filter(s => s.id !== id)};
Наконец-то я разобрался как это работает. Спасибо!
источник

IM

Ilya Matvienko in TypeScript — русскоговорящее сообщество
в 17
источник

ДН

Денис Новожилов in TypeScript — русскоговорящее сообщество
Всем привет! Я пытаюсь написать декоратор, который можно было бы применить только к методам с определенной сигнатурой. В моем конкретном случае - метод может иметь аргументы только определенных типов и обязан возвращать промис, где тип значения в промисе тоже один из разрешенных. Ну, например, я хочу чтобы на () => Promise<void> было можно повесить мой декоратор, а на () => Promise<boolean> нельзя.
Версия тайпскрипта у меня актуальная.
Буду рад если кто-нибудь поделится примером. Мой текущий код выглядит вот так:
https://gist.github.com/gloomybrain/718d03428bf44d50f981ab8ae4a55c27
источник

KS

Kot S in TypeScript — русскоговорящее сообщество
Всем привет. Допустим у меня в проекте в глобальном пространстве объявлен объект, у него есть функция с длинными названием. Могу я как-то сделать для него короткий alias, который будет работать в каждом модуле проекта?
Сейчас я в каждом модуле пишу что-то типа
const shortName = worker.veryVeryVeryVeryVeryLongName;
источник

RN

Roman Neretin in TypeScript — русскоговорящее сообщество
Kot S
Всем привет. Допустим у меня в проекте в глобальном пространстве объявлен объект, у него есть функция с длинными названием. Могу я как-то сделать для него короткий alias, который будет работать в каждом модуле проекта?
Сейчас я в каждом модуле пишу что-то типа
const shortName = worker.veryVeryVeryVeryVeryLongName;
Через наследование можно решить или использовать в проекте DI контейнер
источник

KS

Kot S in TypeScript — русскоговорящее сообщество
Можно пример?
источник

RN

Roman Neretin in TypeScript — русскоговорящее сообщество
Kot S
Можно пример?
Ну например есть класс BaseModule в нем есть переменянная shortName = worker.longName и класс ModuleA extends BaseModule и тогда а наследует переменную shortName и можешь обращаться через переменную контекста this (this.shortName ) , а через DI контейнер (например typedi) делаешь Container.set(‘shortName’, worker.longName) и где нужно делаешь либо через декоратор @Inject либо через Container get , хотя если подумать не сильно отличается от варианта с объявлением как ты делаешь (но думаю более правильно так будет )
источник

KS

Kot S in TypeScript — русскоговорящее сообщество
Ого, чёт слишком сложно
источник

KS

Kot S in TypeScript — русскоговорящее сообщество
Думал есть какой-то простой способ, типа прописать глобальные переменные и всё
источник

KS

Kot S in TypeScript — русскоговорящее сообщество
Просто когда пробую в declare global такое сделать, пишет
A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference
источник

DS

Denis ø Skiba in TypeScript — русскоговорящее сообщество
export const { veryVeryVeryVeryVeryLongName: short } = worker
источник

M

Mr. King in TypeScript — русскоговорящее сообщество
Ребят что сдесь означает во второй строке (Function | Function[])[] ?
источник

p

polunin.ai in TypeScript — русскоговорящее сообщество
Массив в котором находятся функции или массивы функций
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪ in TypeScript — русскоговорящее сообщество
Sergey
Привет. У меня вопрос по файловой структуре проекта. Есть какие-то лучшие практики по тому, где хранить типы и интерфейсы в рект приложении. Интерфейсы сейчас храню в файлах компонента, типы в корне в d.ts файле, но что-то мне подсказывает, что это не лучший подход
Привет. Имхо, идеальная структура - это когда вы можете свой папку с модулем (-компонентой) без особых усилий выделить в отдельный package - и грузить через npm/yarn без изменения остальной части приложения, а также использовать ваш package в других приложениях с другим стором. На корневом уровне обычно только "склейка" этих модулей в одно единое приложение
источник

S

Sergey in TypeScript — русскоговорящее сообщество
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Привет. Имхо, идеальная структура - это когда вы можете свой папку с модулем (-компонентой) без особых усилий выделить в отдельный package - и грузить через npm/yarn без изменения остальной части приложения, а также использовать ваш package в других приложениях с другим стором. На корневом уровне обычно только "склейка" этих модулей в одно единое приложение
Спасибо. Как-то так и делаю
источник