
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> - нелегальная дичь. понятно.

Viacheslav
11.01.2017
21:02:33

Google

Ҫѐҏӗѫӑ
11.01.2017
21:02:38
нет, нелегальная дичь — это то, что ты выше писал

Viacheslav
11.01.2017
21:03:53
для массива достаточно одного, для мапы нужно два

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 в примере делают

Aleh
11.01.2017
21:28:46
undefined ж дольше писать(

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
только не размазывайте это по проекту

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 {
а так?