Size: a a a

Angular - русскоговорящее сообщество

2021 February 06

ДЗ

Даниил Зеликов... in Angular - русскоговорящее сообщество
Как ещё объяснить..))
интерфейс есть. И не один. Не важно. Мы его передаем дженериком
export interface SomeInterface {
 [SomeEnum.One]: number;
 [SomeEnum.Two]: number;
}

Есть класс
class SomeClass<T> {
 items: T; <- сюда вот магию
}

Я пишу (то как я хочу)
const test = new SomeClass<SomeInterface>();
test.items[SomeEnum.One] = 'Он тут уже ожидает строку по тем же ключам';
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Даниил Зеликов
Как ещё объяснить..))
интерфейс есть. И не один. Не важно. Мы его передаем дженериком
export interface SomeInterface {
 [SomeEnum.One]: number;
 [SomeEnum.Two]: number;
}

Есть класс
class SomeClass<T> {
 items: T; <- сюда вот магию
}

Я пишу (то как я хочу)
const test = new SomeClass<SomeInterface>();
test.items[SomeEnum.One] = 'Он тут уже ожидает строку по тем же ключам';
type Stringed<T> = { [P in keyof T]: string; };

Может так? Ну я с телефона, не уверен, что не напутал )
источник

S

STEVE in Angular - русскоговорящее сообщество
Ребята, всем привет.
Читал оф  доку и немного не понял.
Зачем нужен FormBuilder, это просто еще один инструмент для создания форм ?
Ну то  есть чем это отличается если делать просто через FormGroup ?
источник

MK

Mihail Kuzmin in Angular - русскоговорящее сообщество
STEVE
Ребята, всем привет.
Читал оф  доку и немного не понял.
Зачем нужен FormBuilder, это просто еще один инструмент для создания форм ?
Ну то  есть чем это отличается если делать просто через FormGroup ?
меньше кода
источник

S

STEVE in Angular - русскоговорящее сообщество
Mihail Kuzmin
меньше кода
ну все значит правильно все понял.
Спасибо.
источник

M

Michail in Angular - русскоговорящее сообщество
Все привет, имеет основной проект, и имеет модуль( где лежит часто используемые функции декораторы и т.д. для других проектов), который подтягивается с гита,  появилась проблема после обновлении angular на 11.1.2.
Версии @angular/cli совпадают там и там .
Никто не сталкивался с этим? подразумеваю дело в ivy, но не могу понять куда смотреть
источник

ДЗ

Даниил Зеликов... in Angular - русскоговорящее сообщество
Oleg Safonov
type Stringed<T> = { [P in keyof T]: string; };

Может так? Ну я с телефона, не уверен, что не напутал )
Вот я точно также пробовал. В итоге в ключ встает значение енамки
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Даниил Зеликов
Вот я точно также пробовал. В итоге в ключ встает значение енамки
А покажите как используете такой код) и что получается там
источник

ДЗ

Даниил Зеликов... in Angular - русскоговорящее сообщество
enum SomeEnum {
 One = '1',
 Two = '2'
}

interface SomeInterface {
 [SomeEnum.One]: number;
 [SomeEnum.Two]: number;
}

class SomeClass<T> {
 items: { [P in keyof T]: string; }; <- если так
}

// где то
const test = new SomeClass<SomeInterface>();
test.items. <- (ставлю точку и предлагает ['1'], ['2'], а ожидается что предложит енамки [SomeEnum.One]...)
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Даниил Зеликов
enum SomeEnum {
 One = '1',
 Two = '2'
}

interface SomeInterface {
 [SomeEnum.One]: number;
 [SomeEnum.Two]: number;
}

class SomeClass<T> {
 items: { [P in keyof T]: string; }; <- если так
}

// где то
const test = new SomeClass<SomeInterface>();
test.items. <- (ставлю точку и предлагает ['1'], ['2'], а ожидается что предложит енамки [SomeEnum.One]...)
а если создать переменную типа SomeInterface и поставить точку, он что предложит? '1' и '2' или SomeEnum.One и SomeEnum.Two?
источник

ДЗ

Даниил Зеликов... in Angular - русскоговорящее сообщество
Oleg Safonov
а если создать переменную типа SomeInterface и поставить точку, он что предложит? '1' и '2' или SomeEnum.One и SomeEnum.Two?
Если я правильно вас понял
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Даниил Зеликов
Если я правильно вас понял
Ну да, выглядит странно) но я думаю в общем случае тут ничего не придумать

А как вообще задача изначально стоит?)
источник

ДЗ

Даниил Зеликов... in Angular - русскоговорящее сообщество
Oleg Safonov
Ну да, выглядит странно) но я думаю в общем случае тут ничего не придумать

А как вообще задача изначально стоит?)
Класс принимает в конструктор объект этого интерфейса. Конвертирует числа в специальные строки, после чего они доступны по тем же ключам.
Хотелось вот так
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Даниил Зеликов
Класс принимает в конструктор объект этого интерфейса. Конвертирует числа в специальные строки, после чего они доступны по тем же ключам.
Хотелось вот так
Не, это я понял) а ... зачем? Просто может Вам как то по другому попробовать решить проблему? Ну т.е. мы в общем случае решили, у Вас конкретный кейс с Enum в качестве ключей, с ним видимо сложно)
источник

G

Genady in Angular - русскоговорящее сообщество
Даниил Зеликов
Класс принимает в конструктор объект этого интерфейса. Конвертирует числа в специальные строки, после чего они доступны по тем же ключам.
Хотелось вот так
Как в шарпе
источник

ДЗ

Даниил Зеликов... in Angular - русскоговорящее сообщество
Oleg Safonov
Не, это я понял) а ... зачем? Просто может Вам как то по другому попробовать решить проблему? Ну т.е. мы в общем случае решили, у Вас конкретный кейс с Enum в качестве ключей, с ним видимо сложно)
а.. вообще. Даже не знаю как описать)
Есть такие вот ключи (не спрашивайте зачем)
Эти ключи разбиты на группы. Группа - это первые три цифры в строке. Дальше точка - вторые три числа в строке.
И я хотел их инициализировать как то через класс аля
const groups = {
 [Group.One] = new GroupClass(0, {
   [Point.First]: 1,
   [Point.Second]: 2
 },
 [Group.Two] = new GroupClass(1, {
   [Point.First]: 1,
   [Point.Second]: 2
 }
}
класс бы конвертировал в 6-ти значные коды и потом по этим же ключам можно было спокойно достать строку
Надеюсь моё объяснение понятно)
источник

SV

Sergey Vakhramov in Angular - русскоговорящее сообщество
Даниил Зеликов
а.. вообще. Даже не знаю как описать)
Есть такие вот ключи (не спрашивайте зачем)
Эти ключи разбиты на группы. Группа - это первые три цифры в строке. Дальше точка - вторые три числа в строке.
И я хотел их инициализировать как то через класс аля
const groups = {
 [Group.One] = new GroupClass(0, {
   [Point.First]: 1,
   [Point.Second]: 2
 },
 [Group.Two] = new GroupClass(1, {
   [Point.First]: 1,
   [Point.Second]: 2
 }
}
класс бы конвертировал в 6-ти значные коды и потом по этим же ключам можно было спокойно достать строку
Надеюсь моё объяснение понятно)
{ [key in Group]: { [key in Point]: number } }
источник

ДЗ

Даниил Зеликов... in Angular - русскоговорящее сообщество
При логике мною желаемой класс Group принимал бы интерфейс конкретной группы, и не знал бы о енамах. Это
{ [key in Group]: { [key in Point]: number } }

будет бессмысленно, так как автокомплит мне вывалит соверешноо всё
источник

SV

Sergey Vakhramov in Angular - русскоговорящее сообщество
Даниил Зеликов
При логике мною желаемой класс Group принимал бы интерфейс конкретной группы, и не знал бы о енамах. Это
{ [key in Group]: { [key in Point]: number } }

будет бессмысленно, так как автокомплит мне вывалит соверешноо всё
Partial
источник

SV

Sergey Vakhramov in Angular - русскоговорящее сообщество
Такое лучше в тс-чатик адресовать
источник