@typescript_ru

Страница 368 из 669
Vlad
03.10.2017
14:21:56
или можно? как?

export = function () {}
спасибо. опробую.

работает
обнадёживает. ура. попробую.

Артемий
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 внутрь класса на верхнем уровне записать

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
Есть 2 проекта. Хочу пошарить между ними типы.
где используются обьекты этих типов

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

эти типы используются в каждом из проектов

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

Vlad
03.10.2017
21:05:15
товарищи вопрос конкретный =)

есть interface X {}

в двух проектах есть объекты использующие этот интерфейс. и по смыслу это именно те типы*

Вертихвост
03.10.2017
21:05:50
товарищи вопрос конкретный =)
Тогда конкретный ответ. Подключай там где необходимо

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

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
Спасибо . Смотрю тоже

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

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)

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