@typescript_ru

Страница 244 из 669
da horsie
01.06.2017
06:53:46
Мочи козлов

@mkusher

Aleh
01.06.2017
06:54:32
Кто-то обогнал меня?)

da horsie
01.06.2017
06:54:53
Нет

Google
da horsie
01.06.2017
06:54:56
Вон она

Вот же

andretshurotshka?❄️кде
01.06.2017
06:59:41
сложно

Aleh
01.06.2017
07:08:26
Хм, коняхе наверное спать пора

Kenya-West
01.06.2017
07:15:38
На русском. Жуть
На немецком

Aleh
01.06.2017
07:19:39
Клиент тормозит у тебя

Adam
01.06.2017
08:17:50
когда js изучали, другими языками не интересовались? Тогда вы учили javascript, конкретный язык, а не учились программировать

Дмитрий
01.06.2017
08:21:35
«Линтер тайпскрипту не нужен» Ахахахпахп простите

О — оптимизм

Google
Adam
01.06.2017
08:22:29
хорошо, как вы его используете? use-case, пожалуйста

присвоить в if-e копмилятор не даёт

Kenya-West
01.06.2017
08:23:14
Вопрос! Вот что я делаю не так? В room.class.ts: export class Room { common: { type: { value: 1, text: 'Аудитория' } | { value: 2, text: 'Актовый зал' } } } В room.service.ts: let roomClass = new Room(); roomClass.common.type //ERROR Error: Uncaught (in promise): TypeError: Cannot set property 'type' of undefined В VS Code я могу спокойно посмотреть все проперти класса Room, а при исполнении в браузере выдаёт ошибку выше. Почему?

Adam
01.06.2017
08:23:36
я в шоке от этого кода

Kenya-West
01.06.2017
08:23:44
Мне можно

Adam
01.06.2017
08:24:00
посмотрите самантику классов js

Kenya-West
01.06.2017
08:24:23
Какой js

Ладно, я на тостер

Adam
01.06.2017
08:24:41
тот, который в браузере будет из этого говна

вот класс: export class Vector2 { private _x: number; private _y: number; constructor(x: number, y: number) { if (isFinite(x) && isFinite(y)) { this._x = x; this._y = y; } else { this._x = 0; this._y = 0; }; } get x() { return this._x; } get y() { return this._y; } set x(value: number) { this._x = value; } set y(value: number) { this._y = value; } copy() { return new Vector2(this._x, this._y); } //Vector vs vector addVector(vector2: Vector2) { //сложение применяем для движения объектов this._x += vector2.x; this._y += vector2.y; return this; } }

И сравните, что за дерьмо вы описали

Adam
01.06.2017
08:28:59
gist
извиняюсь

Дмитрий
01.06.2017
08:29:29
тот, который в браузере будет из этого говна
Братан, для человека, который не понимает, зачем нужен линтер, у тебя слишком много гонора

Adam
01.06.2017
08:30:08
для статического анализа кода он нужен

Дмитрий
01.06.2017
08:31:28
Он нужен для того, чтобы не было мучительно больно переписывать то что ты там состряпал

У меня к сожалению слишком много примеров обратного

Kenya-West
01.06.2017
08:32:03
для статического анализа кода он нужен
Он у меня пробелы удаляет и импортит забытые компоненты из конструкторов... Полезная вещь

Adam
01.06.2017
08:33:13
импортит забытые компонетны из конструкторов? WTF?!

Дмитрий
01.06.2017
08:34:49
«Задрот: созревание»

Google
Дмитрий
01.06.2017
08:35:05
Во всех кинотеатрах страны

Alexander
01.06.2017
08:44:56
не вернется

Дмитрий
01.06.2017
08:46:21
Реп у него получался лучше

Yuri
01.06.2017
09:21:56
а вот я очень люблю jasmine и тестирование. Наткнулся на проект jasmineMatchers, в котором есть вещи вроде такого: expect(properties).toBeArrayOfObjects();

интересно, можно ли написать typescriptMatchers, которые бы проверяли, что инстанс соответсвует какому-то ts-типу?

например так: expect(x).toBeObjectOfClass(MyAwesomeClass); expect(x).toBeObjectOfInterface(MyAwesomeInterface); expect(arr).toBeArrayOfObjectsOfInterface(MyAwesomeInterface); (facepalm)

Дмитрий
01.06.2017
09:24:18
instanceof

Yuri
01.06.2017
09:24:38
а с интерфейсами?

Guards вроде как про это?

Alexander
01.06.2017
09:25:44
не получится без передачи данных о типах в рантайм

Aleh
01.06.2017
09:25:46
Yuri
01.06.2017
09:28:15
не получится без передачи данных о типах в рантайм
я не очень опытный, но вроде ж Guards это и делают? https://www.typescriptlang.org/docs/handbook/advanced-types.html

Yuri
01.06.2017
09:33:11
не догоняю пока...

Aleh
01.06.2017
09:35:15
ну приведи свой кейс реальный

а не абстрактный

ты можешь просто указать return тип у функции

Google
Aleh
01.06.2017
09:35:35
и ts проверит, чтобы он был правильный

Yuri
01.06.2017
09:58:34
ну возвращает у меня функция any[], но я знаю, что при вот этих конкретных аргументах она возвратит MyType[]

Дмитрий
01.06.2017
09:58:51
Ну так и типизируй соответствующе)

Yuri
01.06.2017
10:06:17
ну а при других возвратит MyType2[]

назначение теста в том чтобы проверить, что если в функцию передам (1,2), то она возвратит массив MyType[]. А если передам (6,7), возвратит MyType2[]

Aleh
01.06.2017
10:09:57
если вы можете использовать ts для проверки(проставить типы аргументам и результатам), то ts их и проверит, если не можете, то вам надо самим придумывать, как проверить объект на соответствие типу

Admin
ERROR: S client not available

Aleh
01.06.2017
10:10:18
вообще вопрос хороший, я о таком тоже думаю

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

Дмитрий
01.06.2017
10:12:42
Я над этим сейчас работаю)

Aleh
01.06.2017
10:13:01
ого, клево, а в каком виде?

Дмитрий
01.06.2017
10:19:15
Паттерн-матчинг Мне он вообще требуется для создания AST языка, в текущей реализации это примерно как type guards. Если функция принимает модель Even, то на уровне типизации будет проверка, что там число, а на динамическом — что отвечает функции x % 2 === 0

Параллельно думаю, что было бы неплохо прикрутить его к бабель-плагину с контрактами

Ostap
01.06.2017
13:36:19
Вопрос по TS: // foo.ts class A {} export default new A(); ошибка [ts] Exported variable 'A' has or is using private name 'A'.

как експортить singleton ?

Дмитрий
01.06.2017
13:37:27
const youMightNotNeedClass = new A() export default youMightNotNeedClass

Ostap
01.06.2017
13:38:33
[ts] Exported variable 'youMightNotNeedClass' has or is using private name 'A'.

telegram typescript compiler (c)

tsc 2.3.3

Сергей
01.06.2017
13:40:05
[ts] Exported variable 'youMightNotNeedClass' has or is using private name 'A'.
интерфейс класса экспортни или private constructor

Google
Сергей
01.06.2017
13:40:21
но тру-синглтон не сделать в js/ts

Ostap
01.06.2017
13:40:40
хмм. почему ?

Сергей
01.06.2017
13:41:17
ну потому

Ostap
01.06.2017
13:41:37
интерфейса нету. есть только class A{}. про private contstructor не понял

Сергей
01.06.2017
13:42:14
интерфейса нету. есть только class A{}. про private contstructor не понял
export class A { private constructor() {} } const instance = new A() export default instance

Ostap
01.06.2017
13:42:34
[ts] Constructor of class 'A' is private and only accessible within the class declaration.

Сергей
01.06.2017
13:42:57
хотя я тут тоже мимо

Ostap
01.06.2017
13:44:46
угу. не хочет. я не понимаю проблему мб

Сергей
01.06.2017
13:45:05
угу. не хочет. я не понимаю проблему мб
ts хочет чтобы тип был доступен

Дмитрий
01.06.2017
13:45:06
Проблема в программировании через телеграм ?

Ostap
01.06.2017
13:45:31
?

Сергей
01.06.2017
13:45:49
вообще задумайся, зачем тебе синглтон

Дмитрий
01.06.2017
13:45:57
но тру-синглтон не сделать в js/ts
Не считая того, что модуль по спеке и есть синглтон, в js реально сделать синглтон даже проще чем в ентих ваших java)

Сергей
01.06.2017
13:45:59
мб он тебе не нужен? и можно обойтись обычным инстансом?

Дмитрий
01.06.2017
13:46:15
Не

Реальный синглтон

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