@typescript_ru

Страница 203 из 669
Сергей
06.04.2017
15:16:58
Юзай флоу, он четкий
убедить бы всю компанию в этом

Дмитрий
06.04.2017
15:17:01
Сколько примерно баллов по шкале четкости?

Dreamerinnoise
06.04.2017
15:17:36
10 из 10, конечно же.

Дмитрий
06.04.2017
15:18:24
Верю на слово

Google
Aleh
06.04.2017
15:41:50
как вариант)
да, или propTypes

jsDoc хуже в этом плане работает, много ограничений
ну разве что сами типы неудобно(невозможно?) описывать, а в остальном просто многословнее

Сергей
06.04.2017
17:56:33
Artur
06.04.2017
17:56:39
а где можно?)
В скале точно нельзя тоже

Aleh
06.04.2017
17:56:48
и в хаскеле

Artur
06.04.2017
17:56:51
Хочу типизировать
Типизируй до 5 аргумента

Возможно что то будет с внедрением variadic types

Aleh
06.04.2017
17:57:58
есть определенные сомнения

ну типа вариативность сложно, а это норм, осилим?)

andretshurotshka?❄️кде
06.04.2017
20:28:22
лол

Алишер
07.04.2017
08:42:21
добрый день. по TS можно задавать вопросы?

Google
Aleh
07.04.2017
08:43:27
:)

Алишер
07.04.2017
08:47:40
тогда подскажите как типизировать классы... Есть класс, в конструкторе он принимает классы:у которых д.б. несколько ownProperty и более одного статичного метода, которые возвращают различные типы?

Aleh
07.04.2017
08:50:06
тогда подскажите как типизировать классы... Есть класс, в конструкторе он принимает классы:у которых д.б. несколько ownProperty и более одного статичного метода, которые возвращают различные типы?
https://www.typescriptlang.org/play/index.html#src=type%20Something%20%3D%20%7B%0A%20%20a%3A%20number%0A%20%20b%3A%20string%0A%7D%0A%0Aclass%20A%20%7B%0A%20%20constructor(a%3A%20Something%2C%20b%3A%20Something)%20%7B%20%7D%0A%20%20static%20test()%20%7B%0A%20%20%20%20const%20a%20%3D%20%7B%20a%3A%201%2C%20b%3A%20%22%22%20%7D%3B%0A%20%20%20%20return%20new%20A(a%2C%20a)%0A%20%20%7D%0A%7D

?

Алишер
07.04.2017
08:54:30
сами классы

Artur
07.04.2017
08:54:52
У самого класса должны быть ownProperty или у инстанса?

Алишер
07.04.2017
08:55:10
у самого

щас поясню на примере

Artur
07.04.2017
08:55:43
Класс можно типизировать интерфейсом: interface ClassConstructor<T> { new(...args: any[]): T property1: type1 }

Aleh
07.04.2017
08:55:54
ну или typeof

Artur
07.04.2017
08:56:25
ну или typeof
Я так понимаю Алишер хочет принимать разные конструкторы классов, которые имеют некий shape

typeof делать не от чего

или есть от чего?

Aleh
07.04.2017
08:56:44
я вот по описанию ваще не понял о чем речь(

Artur
07.04.2017
08:56:57
Угу, гадание на кофейной гуще какое-то

Алишер
07.04.2017
08:57:19
@module('dogs') class Dogs{ static wof(params){ return 'wof' } static wof2(params){ return 'wof2' } }

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

т.е. class Base{ _defs; constructor(private animals){ this.init(); } init(){ animals.forEach(animal=>{ let module = animal.name; let properties = Object.getOwnPropertyNames(animal); properties.forEach(method=>{ this._defs.push(method); }); }); } }

декоратор @module добавляет свойство name классу Dogs

Google
Алишер
07.04.2017
09:04:03
сумел объяснить?

Aleh
07.04.2017
09:07:26
сумел объяснить?
https://www.typescriptlang.org/play/index.html#src=type%20Class%3CT%3E%20%3D%20%7B%0A%20%20new%20(...args%3A%20any%5B%5D)%3A%20T%0A%7D%0A%0Afunction%20module(name%3A%20string)%20%7B%0A%20%20return%20function%20%3CA%20extends%20Class%3Cany%3E%3E(someClass%3A%20A)%3A%20A%20%26%20%7B%20name%3A%20string%20%7D%20%7B%0A%20%20%20%20return%20someClass%3B%0A%20%20%7D%20%0A%7D%0A%0A%40module('dogs')%0Aclass%20Dogs%20%7B%0A%20%20static%20wof(params)%7B%0A%20%20%20%20return%20'wof'%0A%20%20%7D%0A%20%20static%20wof2(params)%7B%0A%20%20%20%20return%20'wof2'%0A%20%20%7D%0A%7D%0A%0Aclass%20Base%7B%0A%20%20_defs%3B%0A%20%20constructor(private%20animals%3A%20Class%3CDogs%3E%5B%5D)%7B%0A%20%20%20%20this.init()%3B%0A%20%20%7D%20%0A%20%20init()%7B%0A%20%20%20%20this.animals.forEach(animal%3D%3E%7B%0A%20%20%20%20%20%20let%20module%20%3D%20animal.name%3B%0A%20%20%20%20%20%20let%20properties%20%3D%20Object.getOwnPropertyNames(animal)%3B%0A%20%20%20%20%20%20properties.forEach(method%3D%3E%7B%0A%20%20%20%20%20%20%20%20this._defs.push(method)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%7D%0A%7D

Алишер
07.04.2017
09:08:13
oh shi..

попытаюсь понять), спасибо

Aleh
07.04.2017
09:08:42
да там почти ничего не изменилось

в одном месте тип прописал и module определил

Алишер
07.04.2017
09:11:12
просто дженерики не совсем еще понимаю

type Class<T> = { new (...args: any[]): T }

почему new? я там вообще нигде не беру объект класса

так, еще раз. есть function module(name:string):<xz1>{ return function (target:<xz2>):void?{ target.name=name || ''; }} @module('dogs') class Dog{}

научите

Aleh
07.04.2017
09:32:01
так подсмотри в моем варианте

Aleh
07.04.2017
09:32:26
type Class<T> = { new (...args: any[]): T }
потому что класс это объект, к которому можно применить оператор new и получить новый объект на выходе

Алишер
07.04.2017
09:33:28
понял, т.е. это формальность

таким образом типы для класса прописываются.

function module(name: string) { return function <A extends Class<any»(someClass: A): A & { name: string } { return someClass; } }

вот тут подругому: function module(name: string) { return function <A extends Class<any»(target: A):void { target.name=name; } }

вот так правыильно?

тогда, мне в класс Base нужно чтобы поступали уже декорированные классы

значит я обозначаю type Class<T> = { new (...args: any[]): T; name:string; }

Google
Алишер
07.04.2017
09:59:57
Aleh

Aleh
07.04.2017
13:49:44
ну примерно

я ж скинул рабочий пример, делай с оглядкой на него

Gordey
07.04.2017
13:52:31
товарищи типизировщики

подскажите

Admin
ERROR: S client not available

Gordey
07.04.2017
13:53:30
если у меня есть конфиг, где лежит массив объектов, в каждом из которых набор полей

и я хочу в этом конфиге описать тип каждого поля, потому что потом по этому конфигу исходя из типа, оно будет по разному обрабатываться

мне в этой ситуации ваще может как-то упростить жизнь flow или ts?

Aleh
07.04.2017
13:55:22
ну если это просто статичный объект, то и ts, и flow сами выведут его тип

статичный объект типа export const config = { // your config here }

Gordey
07.04.2017
13:56:21
не, ты меня наверно не понял )

Aleh
07.04.2017
13:58:03
я такой)

Gordey
07.04.2017
13:59:21
вот например есть объект в этом массиве{ a, b } и я знаю, что значение а у меня будет строка, а b - массив - и их нужно будет по разному обрабатывать соответсвенно я могу написать: { a: { type: 'string' }, b: { type: 'array' }} и тогда моя дальнейшая механика обрабатывая этот конфиг может опираться на поле type

вот с помощью flow/ts я могу как-то без поля type это сделать

или это не тот кейс, где они могут помочь

ну т.е. выглядит это как просто матчинг на определенное поле в каждом объекте

но по факту там будут именно типы

Aleh
07.04.2017
14:02:38
можешь пример написать минимальный?)

Gordey
07.04.2017
14:03:10
блин)

Google
Aleh
07.04.2017
14:05:15
ну вот с этими a,b твой текущий код на babel/repl, typescript/play чтоб сразу прям

я просто не понимаю, что тебе надо с этим делать

Gordey
07.04.2017
14:23:43
http://codepen.io/lgordey/pen/JWQKZr

в зависимости от поля type (или какого-то абстрактного типа) будет рендериться определенный компонент

основная мысль в этом

кароч видимо типизация тут не причем) мне чет казалось, что каким-то боком упростит

в общем я хотел бы, чтобы вместо поля type, было что-то вроде a<type: absctract_a>: 'и тут строка еще, значения поля'

без лишней вложенности

но чтоб это abstract можно было потом по аналогии обработать, как с полем type

andretshurotshka?❄️кде
07.04.2017
14:43:13
тайпскрипт тут никак не поможет, типов в рантайме нет

Gordey
07.04.2017
14:54:43
да вот хочется синтаксисом статической хреначить в рантайме

ну да ладно, спс)

Vladimir
07.04.2017
14:56:44
Нет, это вполне возможно

andretshurotshka?❄️кде
07.04.2017
14:56:59
да вот хочется синтаксисом статической хреначить в рантайме
flow-runtime есть, но это походу больше для валидаций в рантайме

Vladimir
07.04.2017
14:57:14
https://github.com/gcanti/io-ts

Mike
07.04.2017
14:58:17
https://github.com/gcanti/io-ts
огонь штука

не юзал, но попробую прям завтра

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