Size: a a a

TypeScript — русскоговорящее сообщество

2021 January 22

キツネ in TypeScript — русскоговорящее сообщество
например PopUpState
источник

キツネ in TypeScript — русскоговорящее сообщество
и пихать его в useState<T> и name: keyof T
источник

キツネ in TypeScript — русскоговорящее сообщество
const [popUp, setPopUp] = useState<PopUpState>({ ... });

const togglePopUpHandler = (name: keyof PopUpState) => { ... };
источник

ДК

Дмитрий Кубарский... in TypeScript — русскоговорящее сообщество
キツネ
const [popUp, setPopUp] = useState<PopUpState>({ ... });

const togglePopUpHandler = (name: keyof PopUpState) => { ... };
понял, спасибо 👍
источник
2021 January 23

7

7384114837 in TypeScript — русскоговорящее сообщество
Иван
какие кракозябры?
а где default?
источник

И

Иван in TypeScript — русскоговорящее сообщество
7384114837
а где default?
А зачем?
источник

7

7384114837 in TypeScript — русскоговорящее сообщество
Иван
А зачем?
ну, это самое
так надо )
источник

И

Иван in TypeScript — русскоговорящее сообщество
7384114837
ну, это самое
так надо )
Какое значение будет у value в default ветке?
источник

АБ

Александр Бакиматов... in TypeScript — русскоговорящее сообщество
Иван
Какое значение будет у value в default ветке?
throw Error🌚
источник

И

Иван in TypeScript — русскоговорящее сообщество
Тогда уж asserts never
источник

s

shumakosik in TypeScript — русскоговорящее сообщество
добрый день. подскажите, в чем может быть проблема? приложение на ангуляр, но в чятике ангуляра ничего толкового кроме как совета писать в каждом дочернем компоненте конструктор, если таковой имеется в родительском, и что так компилит TS

есть компонент
export class DetailProductUnitComponent implements OnInit {

 constructor(protected productUnitPricesService: ProductUnitPricesService) {}

 ngOnInit(): void {
   this.units$ = this.productUnitPricesService.getUnits(this.product.code);
 }
есть заэксетнженный от него компонент

export class ProductUnitComponent extends DetailProductUnitComponent implements OnInit {
 ngOnInit(): void {
   super.ngOnInit();

   this.loading$ = this.productUnitPricesService.getUnitPricesLoading(this.product.code);
 }
в приложении все работает. если запускаем это в тестах, то если в tsconfig указать target: "es5" все норм, а если указать target: "es2015"

то  this.productUnitPricesService будет undefined, но если в заэкстенженном указать конструктор то всё будет норм

constructor(productUnitPricesService: ProductUnitPricesService) {
 super(productUnitPricesService);
}

в тестах естественно провайдится мок сервиса, если бы не провайдилось, то не работало ни с es5, ни с указанным конструктором. чет не гуглится проблемка
источник

u

uid in TypeScript — русскоговорящее сообщество
Kirill Sukhomlin
да надо покопаться, а то я не всегда понимаю почему в каких-то случаях distributive behaviour срабатывает, а в каких-то надо наоборот какими-то костылями его вызывать
Вроде бы с дистрибутивностью правило однозначное — условный тип Exp1 extends Exp2 ? Exp3 : Exp4 (где каждое Exp — некоторое выражение от типов) вычисляется дистрибутивно, только если Exp1 является типом-параметром generic-типа (ни во что не обёрнутым — как сказано в документации, a naked type parameter).

Пример с дистрибутивностью: type G<T> = T extends unknown ? { x: T } : 1.
Слева от extends стоит чистый тип-параметр T, поэтому условие будет вычисляться дистрибутивно.

Без дистрибутивности: type G<T> = [T] extends unknown ? { x: T } : 1.
Слева от extend стоит [T] — литерал кортежа от типа-параметра T, а не сам тип-параметр, — так что дистрибутивность не включится.

Это правило используют в популярном приёме: если нужно вычислить T extends Exp2 ? Exp3 : Exp4 недистрибутивно, достаточно обернуть выражения слева и справа от extends в квадратные скобки ([T] extends [Exp2] ? Exp3 : Exp4).

Кроме того, из правила следует, что условные типы могут вычисляться дистрибутивно только внутри generic-типов (потому что вне дженериков нет требуемого типа-параметра).

Зато дженерик может быть любым (алиас, интерфейс, функциональный тип, или класс): play.
источник

IE

Igor' Ember in TypeScript — русскоговорящее сообщество
Можете подсказать, как правильно называть  private переменные, на которые зависят акцессоры  get/set ?  
Пока использую нижние подчёркивания, но чёт не нравятся они.
protected _prop: string;
public get prop(): string { return this._prop };
public set prop(prop: string) { this._prop = prop };

Как правильно/принято?
источник

キツネ in TypeScript — русскоговорящее сообщество
я в основном делаю private options; и просто делаю геттеры на нужные параметры
источник

キツネ in TypeScript — русскоговорящее сообщество
ну и сеттеры если надо
источник

IE

Igor' Ember in TypeScript — русскоговорящее сообщество
キツネ
я в основном делаю private options; и просто делаю геттеры на нужные параметры
да, так и сделаю, спасибо!
источник

A

Anton in TypeScript — русскоговорящее сообщество
Всем привет, ребят.
Подскажите, как задать для data такой тип, которые будет дополнительно указываться  при каждом объявление DataListInterface
источник

A

Anton in TypeScript — русскоговорящее сообщество
вот пример, Типа как в Maybe прокидывается
источник

A

Anton in TypeScript — русскоговорящее сообщество
так правильно?
источник

A

Alexandr in TypeScript — русскоговорящее сообщество
Anton
так правильно?
У тебя филда будет типа, который ты прокинешь в Data. Ты этого добиваешься?)
источник