Size: a a a

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

2020 April 18

V

Vladislav in TypeScript — русскоговорящее сообщество
Всем привет, первый день в ТСе)

Почему-то на пустой файл ругается TS1128: Declaration or statement expected.
В файле буквально одна строка - 'use strict';
Паста с tsconfig.json - https://pastebin.com/sT6YPiXb
В чём может быть проблема?
источник

V

Vladislav in TypeScript — русскоговорящее сообщество
Vladislav
Всем привет, первый день в ТСе)

Почему-то на пустой файл ругается TS1128: Declaration or statement expected.
В файле буквально одна строка - 'use strict';
Паста с tsconfig.json - https://pastebin.com/sT6YPiXb
В чём может быть проблема?
Проблема крылась в IDE, после компиляции вручную все заработало)
источник

A

Alexander in TypeScript — русскоговорящее сообщество
Я могу как-то объявить, что объект должен содержать ключ, который я  тоже передаю в дженерик?  Что-то вроде этого
источник

V

Valentin in TypeScript — русскоговорящее сообщество
Кто то работал с этой библиотекой или есть норм решение для работы с EXIF картинки https://github.com/exif-js/exif-js?
источник
2020 April 19

IM

Inomdzhon Mirdzhamolov in TypeScript — русскоговорящее сообщество
Anton
я знаю как работает npm install, спасибо, как я понял проблема заключается в том что есть пакеты, которые нужны пользователям пакета, которые вы кладете в peerDeps, соответственно оставляете ответственность поставить их на пользователе пакета. То есть у пользователя они должны быть в обычных deps. Тут ровно два решения:

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

Хотел бы пойти через 1ое решение, т.е. использовать peerDeps. Я лишь привёл пример с двумя сторонними библиотеками, а так их может быть больше, к примеру, ещё какой-нибудь react с react-dom.

Все проблемы исключительно из-за Typescript – без него можно держать всё в peerDeps без проблем. Поэтому решил проблему следующий образом:

1. В deps храню rollup + плагины, @types/node и т.п. что мастхэв при сборке
2. В peerDeps храню сторонние либы.
3. В tsconfig.prod.json выставляю noImplicitAny в false.
4. В самом проекте, где использую пакет, устанавливаю его peerDeps в deps.
5. done!
источник

u

uid 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}
Можно примерно так, как уже подсказали: play.
источник

D

Dmitry in TypeScript — русскоговорящее сообщество
Спасибо
источник

u

uid in TypeScript — русскоговорящее сообщество
Alexander
Я могу как-то объявить, что объект должен содержать ключ, который я  тоже передаю в дженерик?  Что-то вроде этого
Можно так: play.
источник

A

Alexander in TypeScript — русскоговорящее сообщество
Ух ты! Спасибо
источник

ВС

Вячеслав Салоид in TypeScript — русскоговорящее сообщество
Всем привет

Подскажите, пожалуйста

Можно ли как-то указать, что owner может быть User с type: "Company", а players: User[] с type: "Player"

https://gyazo.com/a9e91e15c391425101416dbfe25c9ddd
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Вячеслав Салоид
Всем привет

Подскажите, пожалуйста

Можно ли как-то указать, что owner может быть User с type: "Company", а players: User[] с type: "Player"

https://gyazo.com/a9e91e15c391425101416dbfe25c9ddd
вот казалось бы, чт мешает скинуть этот код в gist/typescript playground или на крайний случай скриншотом

но ссылку на скриншот, это насколько надо неуважать людей, которым задаешь вопрос
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Вячеслав Салоид
Всем привет

Подскажите, пожалуйста

Можно ли как-то указать, что owner может быть User с type: "Company", а players: User[] с type: "Player"

https://gyazo.com/a9e91e15c391425101416dbfe25c9ddd
interface User<T extends "Player" | "Company"> {
 type: T;
}

interface Game {
 players: User<"Player">[];
 owner: User<"Company">;
}
источник

AI

Arthur Irgashev in TypeScript — русскоговорящее сообщество
🦉 ⁣
interface User<T extends "Player" | "Company"> {
 type: T;
}

interface Game {
 players: User<"Player">[];
 owner: User<"Company">;
}
Хм, лучше, наверное, через енумы

Ну или вытащить юнион в отдельный тип
источник

AI

Arthur Irgashev in TypeScript — русскоговорящее сообщество
А то строки как-то ниоч
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
принципиальной разницы нет
источник

VH

Vitalii Hrozynskii in TypeScript — русскоговорящее сообщество
Подскажите пожалуйста, как правильно определить тип res в Bar ?

`interface MyInterface {
 (): string;
 (multi: number): number;
}


const Foo: MyInterface = (x?:number): any => {
 if (typeof x === "number") return x*x;
 return "Sorry this is not a number";
};

const Bar = (res: ???) => {
console.log("ok")
}`

Напрямую прописать number | string не получиться т.к. Foo это внешняя функция, и у нее там куча сигнатур, соответственно она разные параметры возвращает. мне нужно проверять, что-бы тип был оним из возвращаемых Foo.
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Vitalii Hrozynskii
Подскажите пожалуйста, как правильно определить тип res в Bar ?

`interface MyInterface {
 (): string;
 (multi: number): number;
}


const Foo: MyInterface = (x?:number): any => {
 if (typeof x === "number") return x*x;
 return "Sorry this is not a number";
};

const Bar = (res: ???) => {
console.log("ok")
}`

Напрямую прописать number | string не получиться т.к. Foo это внешняя функция, и у нее там куча сигнатур, соответственно она разные параметры возвращает. мне нужно проверять, что-бы тип был оним из возвращаемых Foo.
const Foo: MyInterface = (x?:number): x is number => {
 if (typeof x === "number") return x*x;
 return "Sorry this is not a number";
};
источник

YM

Yuriy Mamaev in TypeScript — русскоговорящее сообщество
Ребят, подскажите в чем проблема?
источник

YM

Yuriy Mamaev in TypeScript — русскоговорящее сообщество
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Yuriy Mamaev
Ребят, подскажите в чем проблема?
в vue
источник