@typescript_ru

Страница 151 из 669
Dreamerinnoise
11.01.2017
20:59:18
но они явно не {} и {}
я часто видел и сам не раз так делал

Ҫѐҏӗѫӑ
11.01.2017
20:59:27
<{}, {}>?

Dreamerinnoise
11.01.2017
20:59:31
React.Component<{}, {}> {}

Viacheslav
11.01.2017
20:59:34
синтаксис легальный

Google
Ҫѐҏӗѫӑ
11.01.2017
20:59:54
и зачем оно?

Dreamerinnoise
11.01.2017
20:59:54
но в последнее время стал писать React.Component<any, any> {}

Viacheslav
11.01.2017
20:59:54
<{}, {}>?
похоже на смайлик

Ҫѐҏӗѫӑ
11.01.2017
21:00:21
+1

Vladimir
11.01.2017
21:00:47
да он никому не нужен

Dreamerinnoise
11.01.2017
21:00:49
может тебе не нужен тс?
эй, я разве сказал, что я в продакшн пушу такое?

что за предположения вэч

Viacheslav
11.01.2017
21:01:26
я про прод ничего не говорил

Dreamerinnoise
11.01.2017
21:02:00
я про прод ничего не говорил
на этапе прототипа структура пропсов и стейта бывает не ясна у компонента

поэтому ставлю заглушку

Anatoly
11.01.2017
21:02:16
<T> - правильный обход any и вереницы type literals. <x,x> - нелегальная дичь. понятно.

Google
Anatoly
11.01.2017
21:05:47
Для массива или какого-то друго типа же? )

Viacheslav
11.01.2017
21:06:14
для любого, кто хочет работать с разными типами

Anatoly
11.01.2017
21:09:22
Ага, понял теперь, спасибо )

Ҫѐҏӗѫӑ
11.01.2017
21:10:27
при определении нельзя {} бтв

точнее не везде можно

и нигде не нужно

Anatoly
11.01.2017
21:11:49
Это я усек :)

Vasiliy
11.01.2017
21:20:15
а я не понял

any vs {} в React.Component<P, S>

Aleh
11.01.2017
21:21:10
{} != any

Vasiliy
11.01.2017
21:21:17
да, это понял, я не понял почему нельзя юзать {}

Aleh
11.01.2017
21:21:31
О.о

Vasiliy
11.01.2017
21:22:39
я наоборот раньше писал any, а теперь пишу {} в случае если не известен тип стейта или пропсов

Aleh
11.01.2017
21:23:12
что значит не известен?

Vasiliy
11.01.2017
21:23:18
ну, например: был компонент стейтфул, а стал стейтлейс, в ходе рефакторинга, например пропсы остались, а на ф-цию еще не переделал т.е. не "не известен", а его нет

Aleh
11.01.2017
21:23:36
у меня редко стейт не {}

Google
Aleh
11.01.2017
21:26:10
не, ну лайфцикл ж нужен бывает

Vasiliy
11.01.2017
21:26:45
а, да, ну я к тому, что в общем-то часто бывает нужно написать extends React.Component<FooProps, {}> и я пишу {} и не понимаю чем это плохо (писать {} вместо any)

Aleh
11.01.2017
21:27:15
так а я пропустил момент плохости

Vasiliy
11.01.2017
21:27:34
или я не так понял, ладно) раз не плохо то ок) сходу не вижу что может быть в этом плохого

Aleh
11.01.2017
21:27:52
я так делаю, но не знаю плохо ли это, а если плохо, то почему

Dreamerinnoise
11.01.2017
21:28:14
export class Hello extends React.Component<HelloProps, undefined> { render() { return <h1>Hello from {this.props.compiler} and {this.props.framework}!</h1>; } }

вот так MS в примере делают

Vasiliy
11.01.2017
21:36:14
а, все, догнал... или нет, мне бы на каком-нибудь простом примере: http://www.typescriptlang.org/play/#src=class%20Foo%3CT1%2C%20T2%3E%20%7B%0D%0A%20%20public%20state%3A%20T2%3B%0D%0A%0D%0A%20%20public%20foo()%20%7B%0D%0A%20%20%20%20console.log(this.state.toString())%0D%0A%20%20%7D%0D%0A%7D%0D%0A%0D%0Aclass%20Bar%20extends%20Foo%3C%7B%7D%2C%20any%3E%20%7B%0D%0A%20%20constructor()%20%7B%0D%0A%20%20%20%20super()%3B%0D%0A%20%20%20%20this.state%20%3D%20%7B%20x%3A%201%20%7D%3B%0D%0A%20%20%7D%0D%0A%7D%0D%0A%0D%0Aconst%20b%20%3D%20new%20Bar()%3B%0D%0Ab.foo()%3B

nvm ^ вопрос снят)

Oleg
11.01.2017
22:05:51
export class Some extends React.Component<void, void> {} же

Vasiliy
11.01.2017
22:06:08
так тоже видел да)

Aleh
12.01.2017
11:17:33
@vkurchatkin а ты во flow юзаешь interface?

Vladimir
12.01.2017
11:18:29
да

но его отличия от {} непросто понять

Aleh
12.01.2017
11:22:05
но его отличия от {} непросто понять
от type alias? Ты просто писал, что это то, что надо выпилить из flow, но разница во flow такая же как и в ts - создания нового имени для типа и не создание)

Vladimir
12.01.2017
11:23:24
нет, там много всяких мелких различий и багов

Aleh
12.01.2017
11:23:43
но это ж самое принципиальное?

Vladimir
12.01.2017
11:23:54
насчет имени я даже не обращал внимания никогда

Google
Aleh
12.01.2017
11:24:15
просто все остальное просто почему-то разные реализации

Vladimir
12.01.2017
11:24:49
в общем, я не понимаю зачем функционально нужен interface

только усложняет жизнь

Aleh
12.01.2017
11:25:27
а зачем юзаешь?

Vladimir
12.01.2017
11:26:01
ну во первых сижу на старой версии Flow - там есть разница с ковариантностью

Во вторых - чисто чтобы отделять типы-данные от типов-не данных

Т е interface - это объект с методами

Кстати в мастере сделали implements

Admin
ERROR: S client not available

Vladimir
12.01.2017
11:27:15
Уж не знаю зачем

Aleh
12.01.2017
11:27:34
чтобы как в тс

Vladimir
12.01.2017
11:27:52
да и без этого нормально

лишнее reserved word

Anatoly
12.01.2017
12:53:03
Ребят, как сейчас по-правильному тип для window сделать? Начинаю уставать от <any>window...

Все всё делают через https://github.com/typings/typings, я так понимаю?

Alexander
12.01.2017
13:01:18
Vasiliy
12.01.2017
13:02:13
lib.dom.d.ts

compilerOptions -> lib в tsconfig

я уже давно скоупед пакеты с дефинишнами юзаю с @types c npm https://www.npmjs.com/~types

Anatoly
12.01.2017
13:04:07
> ompilerOptions -> lib в tsconfig можно чуть подробнее

Google
Vasiliy
12.01.2017
13:04:38
да, сек

т.е. с ts идут дефинишны, для разных окружений

они лежат в соотв файликах и их можно подключать через tsconfig

для этого нужно указать явно что нужно для своего окружения

{ "compilerOptions": { "target": "es6", "lib": ["es6", "es2017", "dom"], ...

вот, например, что у меня сейчас открыто в редакторе

сейчас ссылок накидаю

https://www.typescriptlang.org/docs/handbook/compiler-options.html – тут поиск по ключу --lib

https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#including-built-in-type-declarations-with---lib

Anatoly
12.01.2017
13:07:34
понял, спасибо!

Тогда еще такой вопрос, что делать, когда я хочу дописать руками что-то в window? (43,8): error TS2339: Property 'Events' does not exist on type 'Window'.

Aleh
12.01.2017
13:14:54
Тогда еще такой вопрос, что делать, когда я хочу дописать руками что-то в window? (43,8): error TS2339: Property 'Events' does not exist on type 'Window'.
https://www.typescriptlang.org/play/index.html#src=interface%20Window%20%7B%20Events%3A%20number%3B%20%7D%0D%0A%0D%0Awindow.Events.toString()%3B

только не размазывайте это по проекту

Vasiliy
12.01.2017
13:15:24
https://www.typescriptlang.org/docs/handbook/declaration-merging.html

Anatoly
12.01.2017
13:15:55
Да, мне нужно для временного решения это, что мы не сможем пока на проде обновить - нужно пока оставить в window.

Спасибо, ребят!

@mkusher Не хочет работать такая конструкция..

Aleh
12.01.2017
13:26:55
@m1neral на play же работает)

Anatoly
12.01.2017
13:27:55
Может совсем старый lib.d.ts и он смержиться не может...

Vasiliy
12.01.2017
13:32:21
declare global { interface Window {

а так?

Страница 151 из 669