@typescript_ru

Страница 657 из 669
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
animal(new Thing), animal(new Water) - вот это
кто-то говорил, что в тс много багов с вариантностью

Олександр
15.06.2018
12:09:21
кто-то говорил, что в тс много багов с вариантностью
Ясно, тогда попробую flow. А то эта штука на совсем отбила желание пользоватся ts =/

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
ну конечно, как и должно быть

может быть дело в том, что по "сигнатуре" все классы у тебя одинаковые?
а разница какая, там трабл в том что imAnimal вообще принимает классы, которые не типа Animal

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) ];

https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-function-parameters-bivariant
это же не то, о чем я говорю. Или я где то туплю?

Artur
15.06.2018
12:17:11
это же не то, о чем я говорю. Или я где то туплю?
Да, чуть чуть не то, но близко. Инстансы классов TS зачем то чекает по структуре

Олександр
15.06.2018
12:17:57
Да, чуть чуть не то, но близко. Инстансы классов TS зачем то чекает по структуре
а. Мне толковали про "структуры", а я никак не мог понять, о чем они говорили. Имеется в виду "содержание" класса?

Олександр
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 {}

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

Странные какие-то модели без свойств
ну это же ORM'ые модели, я про эктив рекорд

Дмитрий
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
я же не буду делать типа getFullName на беке, зачем
поля же есть какие-то у модели (колонки в БД)

Олександр
15.06.2018
12:24:09
поля же есть какие-то у модели (колонки в БД)
нет, все хранится в массивчике (карте)

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

Но в целом понятно

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
TS предлагает решать это через union: type North = { type: "North" } type South = { type: "South" } type Direction = South | North
Не более одно раза на приложение, потом начнут совпадать

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

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
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
Ну и зачем тогда TS? Типизации то не будет совсем
Мда, чуток тупой пример, и все же тска будет считать две разные модельки одним классом

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