
John
15.06.2018
11:29:50
говно вопрос
ща на маке соберу
у меня вообще убунта

dexofan
15.06.2018
11:33:03
.exe верни

Google

John
15.06.2018
11:33:16
удалили

Сергей
15.06.2018
11:33:28

John
15.06.2018
11:33:36
ну и правильно, мало ли я вирусов вам понаотправлю
сорян, что-то долго на старом маке собирается
пока на этапе npm i висим))

Олександр
15.06.2018
12:06:21
ребят
я тут для себя узнал такое поведение TS
это считается нормальным?)
animal(new Thing), animal(new Water) - вот это

John
15.06.2018
12:07:52
а разве не надо вызывать конструктор как функцию? new Thing()?

kana
15.06.2018
12:08:02
скобочки опциональны

John
15.06.2018
12:08:07
оу..

Google

kana
15.06.2018
12:08:17

Олександр
15.06.2018
12:09:21

Artur
15.06.2018
12:10:01

kana
15.06.2018
12:10:31

John
15.06.2018
12:10:46
может быть дело в том, что по "сигнатуре" все классы у тебя одинаковые?

Олександр
15.06.2018
12:10:53
ну конечно, как и должно быть

John
15.06.2018
12:11:30
ну да, это странно
а можешь скинуть код текстом?
проверю со своим tsconfig

Олександр
15.06.2018
12:15:25
а можешь скинуть код текстом?
class Thing {}
class Water extends Thing {}
class Animal extends Thing {}
class Cat extends Animal {}
declare function animal(animal: Animal): Animal;
const f = () => [
animal(new Cat),
animal(new Thing),
animal(new Water)
];

Artur
15.06.2018
12:17:11

Олександр
15.06.2018
12:17:57

Artur
15.06.2018
12:18:11

Олександр
15.06.2018
12:18:35
понял, теперь дошло почему так. Ну да, глупость какая то.

Artur
15.06.2018
12:19:13
Ну как только ты добавишь признаков, то всё будет работать как надо

John
15.06.2018
12:19:35
пока они не начнут совпадать

Олександр
15.06.2018
12:19:43
ахахах

John
15.06.2018
12:19:46
но это и не плохо

Google

Олександр
15.06.2018
12:19:53
ну так быть не должно, что бы совпадали, по идее.

John
15.06.2018
12:19:53
если крякаешь квакаешь - ты утка

Олександр
15.06.2018
12:19:55
хотя
нет, возможно вполне
те же модельки ORM

John
15.06.2018
12:20:05
или как тут писали дядя вася в луже бухой

Олександр
15.06.2018
12:20:08
частенько однотипные же

Дмитрий
15.06.2018
12:20:42
Вся фигня в том,что одна из самых удобных методик описания ряда кейсов — через номинальность

Artur
15.06.2018
12:20:47
Короче, вот ишшью правильный: https://github.com/Microsoft/TypeScript/issues/202

Дмитрий
15.06.2018
12:21:20
Структурная типизация есть и у объектов, она никуда не девается, а вот классы бы хотелось иметь адекватные

Олександр
15.06.2018
12:21:33
с одинаковыми свойствами?
ну да. Они же наследуются от какой-то абстрактной модельки и вообще никаких пропов не имеют, только парочку методов, описывающих реляции в лучшем случае, если вообще не пустые
class User extends Model {}
class Item extends Model {}

Artur
15.06.2018
12:21:51

Олександр
15.06.2018
12:21:54
вполне нормальная практика

Дмитрий
15.06.2018
12:22:06

Aleh
15.06.2018
12:22:12
*напоминание про прайвит протектед в классах*

Artur
15.06.2018
12:22:20
Ну у User есть какой-то getName наверняка
у Item такого нет

Google

Олександр
15.06.2018
12:22:41

Aleh
15.06.2018
12:22:47

Олександр
15.06.2018
12:23:18
скорее всего и не будет никаких getName, ибо это лучше отдавать в сыром (почти) виде с бека а там пусть фронт разбирается
я же не буду делать типа getFullName на беке, зачем

Дмитрий
15.06.2018
12:23:33

Artur
15.06.2018
12:23:44

Олександр
15.06.2018
12:24:09

Artur
15.06.2018
12:24:11
Разве родитель про детей должен знать?
Но в целом понятно

Олександр
15.06.2018
12:24:49

Artur
15.06.2018
12:25:38
TS предлагает решать это через union:
type North = {
type: "North"
}
type South = {
type: "South"
}
type Direction = South | North
Ну и так далее

Дмитрий
15.06.2018
12:25:46

kana
15.06.2018
12:26:08

Дмитрий
15.06.2018
12:26:20

Artur
15.06.2018
12:26:32

Дмитрий
15.06.2018
12:26:34

Олександр
15.06.2018
12:26:35
поля же есть какие-то у модели (колонки в БД)
import { Model } from 'objection';
export default class MinimalModel extends Model {
static tableName = 'someTableName';
}
Вот, только проп перезаписывается, и даже это не всегда бывает ибо генерится автоматом из названия класса в некоторых ORM (удобность)

Artur
15.06.2018
12:27:07

Google

Artur
15.06.2018
12:27:16
С инстансом такого класса

Олександр
15.06.2018
12:27:27
Работать то потом как?
const people = await Person.query();
console.log(people[0] instanceof Person); // --> true
console.log('there are', people.length, 'People in total');
элементарно

Artur
15.06.2018
12:27:43

Alexander
15.06.2018
12:27:55
а то код сломается к черту

Олександр
15.06.2018
12:28:07

Alexander
15.06.2018
12:28:17

Олександр
15.06.2018
12:28:17

Artur
15.06.2018
12:28:42
што?
свойства брать через person.name, причём name не описан явно, а неявно подсовывается ORM?

Олександр
15.06.2018
12:28:56
кек
ну хотя в таком коде нечему ломатся, в первой строчке так точно)

Artur
15.06.2018
12:29:54
да.
Ну и зачем тогда TS? Типизации то не будет совсем
Надо же описать, что name: string, createdAt: Date и так далее
Возможно сгенерить дефишинены, но совсем без них смысла от TS нету
всё равно что any обмазаться

Олександр
15.06.2018
12:31:50