@typescript_ru

Страница 588 из 669
Евгений
27.04.2018
07:43:37
я понимаю в чем ошибка. думаю как решить. идеально - в один фаил поместить

Sukhrob
27.04.2018
07:44:39
проблема с пустым модулем
как вариант, можно require задействоввать, чтобы находу подгружать нужную зависимость я иногда такое использую, но это не чистая работа

я понимаю в чем ошибка. думаю как решить. идеально - в один фаил поместить
хе... да даже в одном файле проблема проектирования остается. Хоть и ошибок не будет конечно.

Это проблема не реализации, а проектирования. Где-то логика нарушена. И все.

Google
Евгений
27.04.2018
07:48:00
модуль обработки вебсокетов (А) у него на каждое подключение создается экземплар для обработки клиента (класс B). В проц... спасибо нашел ошибку проектирвоания )

Alice
27.04.2018
07:52:12
я понимаю в чем ошибка. думаю как решить. идеально - в один фаил поместить
На уровне модуля модуля они ещё андефайнед, но при использовании внутри классов/функций, вызываемых на тике начиная со следующего после инициализации модулей, вполне себе дефайнед.

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

Ну и мейби за исключением нескольких других модулей, которые делают только сайд эффекты.

Евгений
27.04.2018
07:55:19
короче надо больше отдыхать... для меня редкость такие ошибки, уже не первый год программировании

Спасибо за помощь!

Dmitrii
27.04.2018
18:17:05
как сделать unset некоторым полям в compilerOptions при наследовании через extends ?

вроде null помог

from
27.04.2018
18:32:47
https://www.typescriptlang.org/play/index.html#src=type%20SessionCredentials%20%3D%20%7B%20sessionId%3A%20string%20%7D%3B%0D%0Atype%20UserCredentials%20%3D%20%7B%20username%3A%20string%3B%20password%3A%20string%20%7D%3B%0D%0Atype%20AuthCredentials%20%3D%0D%0A%20%20%7C%20SessionCredentials%0D%0A%20%20%7C%20UserCredentials%0D%0A%0D%0Afunction%20authorize(platform%2C%20authCredentials%3A%20AuthCredentials)%20%7B%0D%0A%20%20%20%20if%20(%3CSessionCredentials%3EauthCredentials)%20%7B%0D%0A%20%20%20%20%20%20%20%20console.log(authCredentials.sessionId)%0D%0A%20%20%7D%0D%0A%7D%0D%0A

^ почему не работает type guard?

Google
Morsik
27.04.2018
18:34:43
потому что ты не правильно его используешь

Dmitry
27.04.2018
18:35:00
^ почему не работает type guard?
так ты посмотри в скомпиленный код

from
27.04.2018
18:35:09
ну эм я по доке делаю

Подскажите как правильно проверить

а, блин

Le
27.04.2018
18:35:46
ага

не

from
27.04.2018
18:36:32
http://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types

Le
27.04.2018
18:36:37
false это ж boolean, в смысле?

Morsik
27.04.2018
18:37:19
не, именно false

Morsik
27.04.2018
18:37:40
хотя можно обобщить до false-значений

Dmitry
27.04.2018
18:37:48
from
27.04.2018
18:37:49
https://www.typescriptlang.org/play/index.html#src=type%20SessionCredentials%20%3D%20%7B%20sessionId%3A%20string%20%7D%3B%0D%0Atype%20UserCredentials%20%3D%20%7B%20username%3A%20string%3B%20password%3A%20string%20%7D%3B%0D%0Atype%20AuthCredentials%20%3D%0D%0A%20%20%7C%20SessionCredentials%0D%0A%20%20%7C%20UserCredentials%0D%0A%0D%0Afunction%20authorize(platform%2C%20authCredentials%3A%20AuthCredentials)%20%7B%0D%0A%20%20%20%20if%20(%3CSessionCredentials%3EauthCredentials.sessionId)%20%7B%0D%0A%20%20%20%20%20%20%20%20console.log(authCredentials.sessionId)%0D%0A%20%20%7D%0D%0A%7D%0D%0A обновил

стало только хуже))

Le
27.04.2018
18:38:00
ну, if(false)
так это ж не тип

Dmitry
27.04.2018
18:38:17
ну, if(false)
а, ну по идее да, это не по этой части

Le
27.04.2018
18:38:24
null и undefined это типы, не только значения

Google
Dmitry
27.04.2018
18:39:51
null и undefined это типы, не только значения
нет, всё-таки там не пройдёт условие, если фолс придёт в рантайме, тупняки пятничные

from
27.04.2018
18:40:10
'sessionId' in authCredentials
блин в repl работает, локально нет

Ivan
27.04.2018
18:40:27
как там было? null это known unknown undefined это unknown unknown

Morsik
27.04.2018
18:40:27
а локально на что ругается?

from
27.04.2018
18:40:55
на то же самое — на обращение к sessionId внутри условия

Morsik
27.04.2018
18:41:17
можешь скрин кода + ошибки от тса?

from
27.04.2018
18:41:24
короче 20 минут прошло, значит пора as any

можешь скрин кода + ошибки от тса?
угу, говорю же то же самое:

from
27.04.2018
18:41:59


Morsik
27.04.2018
18:42:46
версия тс-а, тсконфиг?

from
27.04.2018
18:43:04
2.5.2

Morsik
27.04.2018
18:43:38
а, ну это может быть, там в 2.6-2.7 примерно были апдейты связанные с тайпгвардами

есть вариант сделать отдельную функцию, которая будет f(x: AuthCredentials): x is SessionCredentials { return 'sessionId' in x } и ее вызывать в ифе

from
27.04.2018
18:46:24
TS2339: Property 'sessionId' does not exist on type 'AuthCredentials'. Property 'sessionId' does not exist on type 'UserCredentials'. Version: typescript 2.5.2

ну давайте обновлюсь

Google
Le
27.04.2018
18:50:30
нужна тайпгард-функция

from
27.04.2018
18:50:50
короче обновился и ещё хуже стало)

Le
27.04.2018
18:50:53
чтобы там было x is y

Admin
ERROR: S client not available

Le
27.04.2018
18:52:04
https://www.typescriptlang.org/play/index.html#src=type%20SessionCredentials%20%3D%20%7B%20sessionId%3A%20string%20%7D%3B%0D%0Atype%20UserCredentials%20%3D%20%7B%20username%3A%20string%3B%20password%3A%20string%20%7D%3B%0D%0Atype%20AuthCredentials%20%3D%0D%0A%20%20%7C%20SessionCredentials%0D%0A%20%20%7C%20UserCredentials%0D%0A%0D%0Afunction%20isSessionCredentials(value%3A%20any)%3A%20value%20is%20SessionCredentials%20%7B%0D%0A%20%20return%20value.sessionId%20!%3D%20null%0D%0A%7D%0D%0A%0D%0Afunction%20authorize(platform%2C%20authCredentials%3A%20AuthCredentials)%20%7B%0D%0A%20%20%20%20if%20(isSessionCredentials(authCredentials))%20%7B%0D%0A%20%20%20%20%20%20%20%20console.log(authCredentials.sessionId)%0D%0A%20%20%7D%0D%0A%7D%0D%0A

или вот так без any

https://www.typescriptlang.org/play/index.html#src=type%20SessionCredentials%20%3D%20%7B%20sessionId%3A%20string%20%7D%3B%0D%0Atype%20UserCredentials%20%3D%20%7B%20username%3A%20string%3B%20password%3A%20string%20%7D%3B%0D%0Atype%20AuthCredentials%20%3D%0D%0A%20%20%7C%20SessionCredentials%0D%0A%20%20%7C%20UserCredentials%0D%0A%0D%0Afunction%20isSessionCredentials(value%3A%20AuthCredentials)%3A%20value%20is%20SessionCredentials%20%7B%0D%0A%20%20return%20(value%20as%20SessionCredentials).sessionId%20!%3D%20null%0D%0A%7D%0D%0A%0D%0Afunction%20authorize(platform%2C%20authCredentials%3A%20AuthCredentials)%20%7B%0D%0A%20%20%20%20if%20(isSessionCredentials(authCredentials))%20%7B%0D%0A%20%20%20%20%20%20%20%20console.log(authCredentials.sessionId)%0D%0A%20%20%7D%0D%0A%7D%0D%0A

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

Ҫѐҏӗѫӑ
27.04.2018
20:33:00
можно с in

Евгений
28.04.2018
08:26:39
Не получается перегрузить метод это вообще возможно?

Artur
28.04.2018
08:27:14
Не получается перегрузить метод это вообще возможно?
Если имеется в виду перегрузка в стиле java - то нет

Евгений
28.04.2018
08:29:09
Artur
28.04.2018
08:29:44
Т. Е через декораторы?
Предлагаю не гадать и подробнее описать проблему

Евгений
28.04.2018
08:30:37
Нужно перегрузить метод, куда яснее?

Alice
28.04.2018
08:31:16
Нужно перегрузить метод, куда яснее?
Добавить более одной сигнатуры?

Google
Евгений
28.04.2018
08:32:00
Именно, с разными параметрами

Aleh
28.04.2018
08:32:51
Можно сделать несколько сигнатур у метода, но реализовать нужно будет потом в одном общем

class A{ f(): void f(a: number): void f(a?: number){} }

Artur
28.04.2018
08:34:55
Нужно перегрузить метод, куда яснее?
Потому что написать 2 и более сигнатур можно, а 2 и более реализации - нельзя

Но в некоторых языках можно

Дмитрий
28.04.2018
08:35:30
Хорошо что нельзя

Artur
28.04.2018
08:35:39
Хорошо что нельзя
Иногда удобно

Дмитрий
28.04.2018
08:35:50
Остановились буквально у черты

Aleh
28.04.2018
08:35:57
В мире жс это бы привело к куче неоднозначностей

Евгений
28.04.2018
08:35:59
Но в некоторых языках можно
В с# это называется overload,

Дмитрий
28.04.2018
08:36:08
Иногда удобно
Ну да, но всё же

Artur
28.04.2018
08:36:27
В мире жс это бы привело к куче неоднозначностей
Да, это особенность js, что нельзя. А точнее особенность отсутствие строгой типизации непосредственно в js

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