
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
Хм, коняхе наверное спать пора

Сергей
01.06.2017
07:09:31

Kenya-West
01.06.2017
07:15:38

da horsie
01.06.2017
07:18:20

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;
}
}
И сравните, что за дерьмо вы описали

Сергей
01.06.2017
08:27:31

Adam
01.06.2017
08:28:59

Дмитрий
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
Во всех кинотеатрах страны

Ilshat
01.06.2017
08:42:45

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

Alexander
01.06.2017
09:29:07

Aleh
01.06.2017
09:30:03
вот тебе и проверка)

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

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

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

Дмитрий
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

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

Дмитрий
01.06.2017
13:46:15
Не
Реальный синглтон