@typescript_ru

Страница 282 из 669
Сергей
17.07.2017
10:14:46
там Error всегда any?
там он всегда Error. А нет. действительно any

Adam
17.07.2017
10:14:48
там Error всегда any?
её нужно писать в константу с утверждением типа: const err = error as Error;

Сергей
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
типа он неявно кастует any в Error?
я не до конца понимаю, как as работает, но похоже, что да

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

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
я подозреваю что вопрос в дублировании аттрибутов конструктора

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

Vadim
17.07.2017
12:25:09
Жаль

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

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
о, не знал что как в кофе работает

Vadim
17.07.2017
12:27:05
а зачем писать в конструкторе public: ?
Чтобы было доступно не только внутри этого класса. Либо я не совсем верно понял принцип доступа к свойствам класса...

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

Сергей
17.07.2017
12:27:19
это же this.param = param;
ааа ну так и подумал с плюсов стырено

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

Сергей
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
export interface ISomeinrefaceName
в исходниках TS это именование не применяется

Сергей
17.07.2017
12:31:03
в исходниках TS это именование не применяется
Тоже не юзаю такое именование Кстати интерфейсы выношу в файлы module-name.h.ts получается довольно мило import { ModuleRestrictor } from '../module-name.h'

Adam
17.07.2017
12:31:10
Есть соглашения
соглашения в C# отражены в языке

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 не использовать

Vadim
17.07.2017
12:35:24
покажи мне документ этих соглашений или конвенций
https://angular.io/guide/styleguide#!#-a-id-03-03-a-interfaces

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

А чем не нравится I в интрефейсах писать?

andretshurotshka?❄️кде
17.07.2017
12:36:17
https://angular.io/guide/styleguide#!#-a-id-03-03-a-interfaces
>Consider naming an interface without an I prefix.

эм

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
я тоже юзаю I для интерфейсов и префикс _ для приватных полей
_ просто обязателен для автогенерации аксессоров

Сергей
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
ты просто на другой пост отвечал

Сергей
17.07.2017
12:42:11
ты просто на другой пост отвечал
нет я всё правильно ответил

Adam
17.07.2017
12:42:57
нет я всё правильно ответил
поля типа $name $age тебе больше нравятся?

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
я в шоке, что кому-то это надо объяснять

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