
Сергей
17.07.2017
10:14:46

Adam
17.07.2017
10:14:48

Сергей
17.07.2017
10:15:23
НО!

Google

Сергей
17.07.2017
10:15:51
у меня в catch есть функция которая принимает handleErrors(error: Error)
и всё ок)

Adam
17.07.2017
10:16:09

Сергей
17.07.2017
10:16:27
типа он неявно кастует any в Error?

Adam
17.07.2017
10:16:58
Кстати, как относитесь к синтаксису в некоторых новых языках (Swift, Kotlin) инстанциировать классы без new, просто вызывая Pascal-case конструктор? Пользуетесь ли этим в ts, cоздаёте фабрики, чтобы не писать new? Ещё в старых книгах по js были такие кейсы

Летучая
17.07.2017
10:25:13

Adam
17.07.2017
10:25:22
считаете ли вы это сахаром или наоборот менее явно получается, где вызов, а где инстанцииация?
так-то можно фабрику фабрик создать и в одну строчку создавать их

Летучая
17.07.2017
10:28:43
в некоторых ML new юзают как дополнительный индикатор создания инстансов неуправляемых ресурсов (IDisposable). в тс такого нет, поэтому пишу new, когда нет прямой необходимости в фабриках ?

Vadim
17.07.2017
12:22:56
Чат, как отрефакторить данный код?
export class A {
constructor(
public id: string,
public number: string,
public concludedOn: Date,
){}
}
export class B {
constructor(
public id: string,
public number: string,
public concludedOn: Date,
public sum: number,
){}
}Полагаю, что это можно отрефакторить через B extends A, но не раскопал, как это будет по синтаксису в данном случае.

Сергей
17.07.2017
12:23:45
бля

Google

Сергей
17.07.2017
12:23:47
именно так
class B extends A {}
пздц

Max
17.07.2017
12:24:20
я подозреваю что вопрос в дублировании аттрибутов конструктора

Vadim
17.07.2017
12:24:56

Max
17.07.2017
12:25:04
вроде никак

Vadim
17.07.2017
12:25:09
Жаль

Сергей
17.07.2017
12:25:24
а зачем писать в конструкторе public: ?

andretshurotshka?❄️кде
17.07.2017
12:25:30

Max
17.07.2017
12:25:31
type ConstA = (public id: string,
public number: string,
public concludedOn: Date,
): void
написать можно

Сергей
17.07.2017
12:25:35
типа сразу в переменныек инстанса?

Max
17.07.2017
12:25:39
но от наследоваться никак

Sergey
17.07.2017
12:26:13
а через super перетечет кстати поведение такое?

andretshurotshka?❄️кде
17.07.2017
12:26:27

Max
17.07.2017
12:26:38
о, не знал что как в кофе работает

Adam
17.07.2017
12:26:40
Чат, как отрефакторить данный код?
export class A {
constructor(
public id: string,
public number: string,
public concludedOn: Date,
){}
}
export class B {
constructor(
public id: string,
public number: string,
public concludedOn: Date,
public sum: number,
){}
}Полагаю, что это можно отрефакторить через B extends A, но не раскопал, как это будет по синтаксису в данном случае.
а какие проблемы? Обычное наследование замути

Vadim
17.07.2017
12:27:05

Adam
17.07.2017
12:27:17
sum инициализируй в derived конструкторе

Сергей
17.07.2017
12:27:19

Google

Adam
17.07.2017
12:27:39

Ivan
17.07.2017
12:28:11
вы ребята сильно превередливые, если это сахар

Adam
17.07.2017
12:28:43

Сергей
17.07.2017
12:29:06
только в плюсах было
class Name {
Name(int foo, bool bar): m_bBar(foo), m_IFoo(bar) {}
}

Vadim
17.07.2017
12:29:16
Уточню. Я юзаю классы с конструктором вместо интерфейсов(из-за херового принципа именования интерфейсов).
Потому и public

Adam
17.07.2017
12:29:37

Сергей
17.07.2017
12:30:01

Adam
17.07.2017
12:30:06
ты используешь классы вместо интерфейсов, потому что не знаешь ооп

Vadim
17.07.2017
12:30:08

Adam
17.07.2017
12:30:28

Сергей
17.07.2017
12:30:32

Vadim
17.07.2017
12:30:41
Есть соглашения

Сергей
17.07.2017
12:31:03

Adam
17.07.2017
12:31:10

Vadim
17.07.2017
12:31:24
У меня не C#

Сергей
17.07.2017
12:31:51

Adam
17.07.2017
12:32:54
У меня не C#
В исходникакх C# отражены соглашения, значит пишем IInterface, в TS нет этого. Но от себя добавлю что не воспринимаю интерфейсы без I

Vasiliy
17.07.2017
12:33:05
https://github.com/basarat/typescript-book/blob/master/docs/styleguide/styleguide.md#interface
https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Interfaces.md

Google

Adam
17.07.2017
12:33:05
И считаю это лучшей практикой

Vasiliy
17.07.2017
12:33:37
это просто привычка, не более того, лет 7 писал на шарпе с .net 1.0, не юзаю в ts префиксы для интерфейсов

Adam
17.07.2017
12:33:51
А какой-то чувак предлагал половину js не использовать

Сергей
17.07.2017
12:34:27

Vadim
17.07.2017
12:35:24

Adam
17.07.2017
12:35:33
всмысле, где?
я про соглашения. Есть соглашения, которые полезны, есть, которые радикальны. В любом случае, если посмотреть исходники серьёзных библиотек, там видно, что это не догмы
А чем не нравится I в интрефейсах писать?

andretshurotshka?❄️кде
17.07.2017
12:36:17
эм

Admin
ERROR: S client not available

Vasiliy
17.07.2017
12:36:21
ну вот да)

Сергей
17.07.2017
12:36:25
да на шарп становится похож

Vasiliy
17.07.2017
12:36:26
https://i.gyazo.com/2e20d4cadcfcc39ef0b4a654094030ca.png

Сергей
17.07.2017
12:36:57

Vadim
17.07.2017
12:37:02
эм
Why? TypeScript guidelines discourage the I prefix.

Сергей
17.07.2017
12:37:04
в пин!

andretshurotshka?❄️кде
17.07.2017
12:37:13
https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines
в пин!
может он про Consider using a class instead of an interface

Google

Adam
17.07.2017
12:38:06
мне лично удобнее читать иерархии наследования, если есть I. Плюс - становятся доступны прилагательные-роли, что соответствует принципу разделения интерейсов

Andrew
17.07.2017
12:39:53
я тоже юзаю I для интерфейсов и префикс _ для приватных полей

Adam
17.07.2017
12:40:19

Сергей
17.07.2017
12:40:28
в ts и так есть private
нахрена ещё этот недосахар

Adam
17.07.2017
12:40:55

Vadim
17.07.2017
12:41:10
ну
В общем, в Angular Team вместо интерфейсов рекомендуют юзать Классы с конструкторами, чтобы не идти вразрез с Typescript styleguides. Пруф сейчас не дам(копать долго). Это упоминалось в гитхабе.

Сергей
17.07.2017
12:41:33

Adam
17.07.2017
12:41:51
ты просто на другой пост отвечал

andretshurotshka?❄️кде
17.07.2017
12:41:51

Сергей
17.07.2017
12:42:11

Adam
17.07.2017
12:42:57

andretshurotshka?❄️кде
17.07.2017
12:42:57

Dreamerinnoise
17.07.2017
12:43:08
у них будет одно и то же имя
и чтобы не было конфликта
называют их с _ префиксом

Andrew
17.07.2017
12:44:06
да, у backing field'ов имена с префиксом _
у методов естественно такой херни нет

Сергей
17.07.2017
12:44:40
вы серьезно?

Adam
17.07.2017
12:44:44
я в шоке, что кому-то это надо объяснять