
Vlad
03.10.2017
14:21:56
или можно? как?

Артемий
03.10.2017
16:48:19
можно как-то автоматом определить все переменные внутри класса из уже готового интерфейса?
например:
interface IUserModel {
name: string,
}
class User {
name: string
constructor (props: IUser) {
this.name = props.name
}
}
чтобы не копировать все содержимое IUserModel, что то типа
class User extends IUserModel

Google

Aleh
03.10.2017
16:54:05
вроде никак

andretshurotshka?❄️кде
03.10.2017
16:55:01
abstract class))))

Aleh
03.10.2017
16:55:32
лол

Dmitry
03.10.2017
17:01:05
Object.Assign(new User(), props)

Aleh
03.10.2017
17:01:40
вопрос про тип же

remf
03.10.2017
17:01:51
Object.assign({},new User(), props)

Артемий
03.10.2017
17:03:01
да, вопрос про тип
так-то и обычный class работает, не только абстрактный
только он зачем-то даже из абстрактного класса без конструктора заставляет ему super вызывать

Dmitry
03.10.2017
17:05:29
Артем, класс наследует класс а интерфейс имплементируют.

Nikolay
03.10.2017
17:10:41
class User implements IUserModel

Артемий
03.10.2017
17:11:13
это не избавит от дублирования всего содержимого IUserModel внутри User
просто понятно, что методы интерфейса надо имплементировать в классе, но переменные-то могли автоматом прописаться

Google

Aleh
03.10.2017
17:12:59
а зачем вам интерфейс?
ну, я понимаю, что бывают ситуации когда это пригодилось, но конкретно в случае IUserModel

Артемий
03.10.2017
17:15:15
IUserModel грубо говоря уже есть и импортится, задача описать класс и приходится копировать все содержимое чтобы все props внутрь класса на верхнем уровне записать

Олег
03.10.2017
17:36:11

Anna
03.10.2017
18:37:43
Привет. А можно ли из extended класса как-то выделить базовый? Суть: я получаю с бэка JSON, что-то с ним делаю и отправляю обратно. Но есть ряд системных полей, которые не могут меняться, и слать их не надо. Вопрос: можно ли это реализовать, через типы или есть какой-то другой паттерн для подобных задач?

Max
03.10.2017
18:40:33
Partial<Class>
?

Anna
03.10.2017
18:46:06
partial - не совсем то. У меня основной вопрос в том, как вычищать поля перед путом. По одному - неудобно. Мапать? Но там их огромная куча с иерархией.

Max
03.10.2017
18:50:33
У нас разделяется
XXXFormData и XXX

Aleh
03.10.2017
18:57:38
задача вообще не про типы

Anna
03.10.2017
19:29:44
Ок. А как это обычно делается?
Просто я в ступоре, что гуглить ))

Олег
03.10.2017
19:42:46

Anna
03.10.2017
19:43:01
Котики, спасибо, уже нашла ))

Max
03.10.2017
19:55:17
Покажи

Vlad
03.10.2017
20:54:35
Товарищи, вопрос.
Есть 2 проекта. Хочу пошарить между ними типы.
Полагаю это должен быть npm пакет. И он должен быть в зависимостях у каждого из проектов.
То есть типы это по сути отдельный проект. Я правильно понимаю ?

Google

Vlad
03.10.2017
20:55:22
Есть какие-то общие правила как нужно это делать?
Хочется что-то типа import { SomeModel } from ‘my-shared-models’
https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html ?
за исключением что это не пойдёт в @types

Олег
03.10.2017
21:01:04

Vlad
03.10.2017
21:01:43
есть 2 проекта. типы одинаковые. хочу пошарить типы. хочу 1 раз написать и 2+ раза включить.
эти типы используются в каждом из проектов

Олег
03.10.2017
21:03:03
они могут быть одинаковые но это не значит что это один и тот же тип

Вертихвост
03.10.2017
21:04:19

Vlad
03.10.2017
21:05:15
товарищи вопрос конкретный =)
есть interface X {}
в двух проектах есть объекты использующие этот интерфейс. и по смыслу это именно те типы*

Вертихвост
03.10.2017
21:05:50

Vlad
03.10.2017
21:06:47
Перечитал свой вопрос. Написал бред, а вы пишите =)
Вопрос: как конкретно правильно запаблишить интерфейсы так, чтобы я мог использовать в остальных своих проектах?

Вертихвост
03.10.2017
21:07:13

Vlad
03.10.2017
21:07:34
Отличный ответ, но не конкретный. Не понимаю как везде, покажите пожалуйста пальцем.
https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html вот что я нашёл.
Пока полагаю это правильный ответ на мой вопрос.
Понятно =) Да, получилось - добавил types свойство.

Дмитрий
03.10.2017
22:23:59

Google

Vlad
03.10.2017
22:24:26
Угу, пасибо. Как часы.

Дмитрий
03.10.2017
22:24:44
Навскидку, в most так вынесены типы в пакет @most/types

Vlad
03.10.2017
22:43:28
Спасибо . Смотрю тоже

andretshurotshka?❄️кде
04.10.2017
03:25:41
для кого пилят typelevel-ts?)
че

Дмитрий
04.10.2017
04:17:17
6 дней без breaking changes

andretshurotshka?❄️кде
04.10.2017
11:10:19
?

Артемий
04.10.2017
12:48:51
можно как-то в typescript сделать тип, чтобы он был одним из нескольких объявленых Symbol?
например есть файл
export const S1 = Symbol('S1')
export const S2 = Symbol('S2')
export const S3 = Symbol('S3')
export const S4 = Symbol('S4')
и я хочу объявить в интерфейсе что-то типа
import * as Symbols from './symbols'
interface A {
type: oneof Symbols
}
чтобы нельзя было левые символы передавать

andretshurotshka?❄️кде
04.10.2017
12:51:48
никак?)

Aleh
04.10.2017
12:51:52
с символами ваще никак вроде

andretshurotshka?❄️кде
04.10.2017
12:52:05
были бы разные типы

Aleh
04.10.2017
12:52:57
https://www.typescriptlang.org/play/index.html#src=const%20s1%20%3D%20Symbol()%0Aconst%20s2%20%3D%20Symbol()%0A%0Atype%20Smth1%20%3D%20typeof%20s1%20%7C%20typeof%20s2%0A%0Aconst%20s3%3A%20Smth1%20%3D%20Symbol()
как видно, не работает

andretshurotshka?❄️кде
04.10.2017
12:56:26
https://github.com/Microsoft/TypeScript/pull/15473
ад хок костыли

Артемий
04.10.2017
13:06:31
и без символов аналогично тоже никак не сделать?
чтобы как enum работал, но только на верхнем уровне без обертки в область видимости енама

Google

andretshurotshka?❄️кде
04.10.2017
13:06:51
без символов юнион

Артемий
04.10.2017
13:06:57
или какую-то аналогию enum, но только чтобы расширять можно было

andretshurotshka?❄️кде
04.10.2017
13:07:14
а енум нельзя расширять?

Aleh
04.10.2017
13:08:52
енум нельзя

andretshurotshka?❄️кде
04.10.2017
13:09:14
?

Artur
04.10.2017
13:28:15
Есть опыт контрибьюта в lib.d.ts?
Хочу чтобы Object.keys() был объявлен как
keys<T>(o: T): Array<keyof T>

Дмитрий
04.10.2017
13:29:53

Aleh
04.10.2017
13:32:30
какая связь у перечислений и opaque? Oo

Artur
04.10.2017
13:33:13

Aleh
04.10.2017
13:33:13
но с другой стороны это тайпскрипт)
почему?
https://www.typescriptlang.org/play/index.html#src=declare%20function%20keys%3CT%3E(o%3A%20T)%3A%20Array%3Ckeyof%20T%3E%0A%0Atype%20MyO%20%3D%20%7B%0A%20%20%20%20a%3A%20string%0A%20%20%20%20b%3A%20number%0A%7D%0A%0Afunction%20f(a%3A%20MyO)%20%7B%0A%20%20%20%20return%20keys(a)%0A%7D%0A%0Aconst%20a%20%3D%20%7B%0A%20%20%20%20a%3A%20%22%22%2C%0A%20%20%20%20b%3A%200%2C%0A%20%20%20%20c%3A%205%2C%0A%20%20%20%20d%3A%20%22%22%0A%7D%0A%0Aconst%20ks%20%3D%20f(a)

Artur
04.10.2017
13:36:19