Size: a a a

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

2020 April 17

OT

Oleg Ts in TypeScript — русскоговорящее сообщество
uid
Можно сперва прогнать JSON-структуру через https://shakyshane.github.io/json-ts, и дальше уже поправить руками получившиеся интерфейсы (если это разово надо сделать, как понял).
к сожалению, надо будет постоянно конвертировать, но спасибо за совет.
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
Oleg Ts
к сожалению, надо будет постоянно конвертировать, но спасибо за совет.
источник

u

uid in TypeScript — русскоговорящее сообщество
Можно примерно так: play.
источник

OT

Oleg Ts in TypeScript — русскоговорящее сообщество
спасибо, порадовал код который приводит к типам
источник
2020 April 18

u

uid in TypeScript — русскоговорящее сообщество
Mark Mark_bass
Ребята, подскажите, не могу найти TS syntax validator. Мне надо код на тайп скрипте без компиляции проверить на синтаксические ошибки. Такое вообще существует ?
Для проверки синтаксической валидности достаточно ESLint с плагином и парсером из typescript-eslint.
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
Ооо это просто офигенно, спасибо 😲
источник

MM

Mark Mark_bass in TypeScript — русскоговорящее сообщество
uid
Для проверки синтаксической валидности достаточно ESLint с плагином и парсером из typescript-eslint.
спасибо но это слегка не та валидация, о линте я знаю и буду его использовать для других проверок)
источник

AM

Anton Mazhuto in TypeScript — русскоговорящее сообщество
Ребят, что он хочет от меня?                         Type '() => { products: Products; isFetching: boolean; fetchPostsAsync: () => void; }' is missing the following properties from type 'HookUseMainType': products, isFetching, fetchPostsAsync
источник

VK

Vladimir Kurchatkin in TypeScript — русскоговорящее сообщество
Ты аннотировал функцию типом объекта
источник

AM

Anton Mazhuto in TypeScript — русскоговорящее сообщество
Vladimir Kurchatkin
Ты аннотировал функцию типом объекта
блин, точно, спасибо 👍
источник

IM

Inomdzhon Mirdzhamolov in TypeScript — русскоговорящее сообщество
Cenator 🐝
typescript это не дев деп, так как при сборке необходим
Ох, покопался в истории чата на тему того, как правильно собирать пакет с typesctipt'ом. Нашёл два холивара на эту тему разной годичности. Так вот.

- Есть lodash и типы к нему @types/lodash.
- Есть query-string идёт сразу с типами

Потом:
1. Я указываю обе библиотеки peerDependencies
2. Делаю npm install --production
3. Делаю npm run build (rollup + ts)
4. Сборка падает, т.к. TS не может зарезолвить lodash

Ок, это ясное дело, тогда давайте так:
1. Я указываю обе библиотеки peerDependencies и дополнительно только @types/lodash в dependencies (т.е. lodash остаётся в `peerDependencies`).
2. Делаю npm install --production
3. Делаю npm run build (rollup + ts)
4. Сборка падает, т.к. TS не может зарезолвить query-string

Да, тоже очевидно, всё, вот так точно сработает:
1. Я указываю обе библиотеки peerDependencies`и дополнительно `query-string и только @types/lodash в dependencies (т.е. lodash остаётся в `peerDependencies`).
2. Делаю npm install --production
3. Делаю npm run build (rollup + ts)
4. О! Сработало 🎉 Сорцов lodash и query-string в бандле нет, отлично 👍
5. Иду использовать эту либу в другом пакете, устанавливаю его зависимости, собираю проект – падет потому что в выше собранном пакете не удётся зарезолвить lodash.


Всё же я делаю что-то не так.
Кто-нибудь сталкивался с такой проблемой?
источник

A

Anton in TypeScript — русскоговорящее сообщество
Inomdzhon Mirdzhamolov
Ох, покопался в истории чата на тему того, как правильно собирать пакет с typesctipt'ом. Нашёл два холивара на эту тему разной годичности. Так вот.

- Есть lodash и типы к нему @types/lodash.
- Есть query-string идёт сразу с типами

Потом:
1. Я указываю обе библиотеки peerDependencies
2. Делаю npm install --production
3. Делаю npm run build (rollup + ts)
4. Сборка падает, т.к. TS не может зарезолвить lodash

Ок, это ясное дело, тогда давайте так:
1. Я указываю обе библиотеки peerDependencies и дополнительно только @types/lodash в dependencies (т.е. lodash остаётся в `peerDependencies`).
2. Делаю npm install --production
3. Делаю npm run build (rollup + ts)
4. Сборка падает, т.к. TS не может зарезолвить query-string

Да, тоже очевидно, всё, вот так точно сработает:
1. Я указываю обе библиотеки peerDependencies`и дополнительно `query-string и только @types/lodash в dependencies (т.е. lodash остаётся в `peerDependencies`).
2. Делаю npm install --production
3. Делаю npm run build (rollup + ts)
4. О! Сработало 🎉 Сорцов lodash и query-string в бандле нет, отлично 👍
5. Иду использовать эту либу в другом пакете, устанавливаю его зависимости, собираю проект – падет потому что в выше собранном пакете не удётся зарезолвить lodash.


Всё же я делаю что-то не так.
Кто-нибудь сталкивался с такой проблемой?
если тебе нужны оба пакета при сборке, почему бы не положить их в devDeps?
источник

IM

Inomdzhon Mirdzhamolov in TypeScript — русскоговорящее сообщество
Anton
если тебе нужны оба пакета при сборке, почему бы не положить их в devDeps?
npm install --production устанавливает зависимости только из dependencies

это для того, чтобы во время сборки в продакшн не устанавливать лишние библиотеки, которые нужны лишь для разработки jest, rollup-dev-server, eslint и т.п. Оные лежат в devDependencies
источник

A

Anton in TypeScript — русскоговорящее сообщество
Inomdzhon Mirdzhamolov
npm install --production устанавливает зависимости только из dependencies

это для того, чтобы во время сборки в продакшн не устанавливать лишние библиотеки, которые нужны лишь для разработки jest, rollup-dev-server, eslint и т.п. Оные лежат в devDependencies
я знаю как работает npm install, спасибо, как я понял проблема заключается в том что есть пакеты, которые нужны пользователям пакета, которые вы кладете в peerDeps, соответственно оставляете ответственность поставить их на пользователе пакета. То есть у пользователя они должны быть в обычных deps. Тут ровно два решения:

- оставить как ест ьи все потребители должны будут устанавливать эти пакеты самостоятельно, плюс в том что если нужно будет обновлять эти “пиры”, это может сделать пользователь вашей библиотеки без необходимости обновлять библиотеку
- указать эти зависимости как dependencies вашего пакета и они просто будут поставляться всем пользователяем, есть оверхед, но это проще для пользователей и на самом деле частая практика сегодня. Типичный пример https://github.com/davidtheclark/cosmiconfig/blob/master/package.json#L112
источник

S

Sergey 🌀 in TypeScript — русскоговорящее сообщество
Всем привет, а как в ТС можно достучаться по ключу до вложенного типа, если по пути могут быть null

https://www.typescriptlang.org/play/?ssl=7&ssc=1&pln=7&pc=35#code/C4TwDgpgBAYg9nAKuaBeKBvAUFXUBGAhgE4BcmOeeAlgCbkDOwx1AdgOZSW4C+UAPlFYBXADaisPLFlCQoASVrI56eEhQBtAORFiWgLra6BoA
источник

r

rollback in TypeScript — русскоговорящее сообщество
Sergey 🌀
Всем привет, а как в ТС можно достучаться по ключу до вложенного типа, если по пути могут быть null

https://www.typescriptlang.org/play/?ssl=7&ssc=1&pln=7&pc=35#code/C4TwDgpgBAYg9nAKuaBeKBvAUFXUBGAhgE4BcmOeeAlgCbkDOwx1AdgOZSW4C+UAPlFYBXADaisPLFlCQoASVrI56eEhQBtAORFiWgLra6BoA
(yourProp as any).prop
источник

S

Sergey 🌀 in TypeScript — русскоговорящее сообщество
rollback
(yourProp as any).prop
Не то
источник

D

Dmitry in TypeScript — русскоговорящее сообщество
Привет. Есть discriminated union, объявленный вот так:
type A = {type: "foo", payload: number} | {type: "bar", payload: boolean};
Можно ли как то вывести тип {type: "foo", payload: number} из юниона по ключу "foo"? Что то типа Foo = Something<A, "foo"> //{type: "foo", payload: number}
источник

EG

Egor Gorbachev in TypeScript — русскоговорящее сообщество
Dmitry
Привет. Есть discriminated union, объявленный вот так:
type A = {type: "foo", payload: number} | {type: "bar", payload: boolean};
Можно ли как то вывести тип {type: "foo", payload: number} из юниона по ключу "foo"? Что то типа Foo = Something<A, "foo"> //{type: "foo", payload: number}
Можно через Extract
При желании можно завернуть это в кастомный тип
источник

D

Dmitry in TypeScript — русскоговорящее сообщество
Egor Gorbachev
Можно через Extract
При желании можно завернуть это в кастомный тип
Спасибо
источник