Forwarded from Sergey Sova
а флоу первоначальный вариант сразу же отлавливает и всё ок
Forwarded from Anton
я на самом деле тут сам с дженериков плевался, раз пошла такая пьянка
допустим у нас есть функция которая принимает класс и возвращает инстанс этого класса
const foo = <S>(arg: S) => S
Эти типы неправильные, потому что когда мы вызовем эту функцию скажем foo(MyClass) => new MyClass() тайпскрипт ее запишет как <S>(arg: S) => typeof S
при этом написать скажем const foo = <S>(arg: S) => InstanceOf<S> по какой то причине не сработает. решением тут будет написать const foo = <S>(arg: { new: (props) => S}) => S
что в приинципе довольно логично, но чудовищно неочевидно, не покрыто тайпскриптовскими доками примерно никак и непонятно почему инстансоф не работает
допустим у нас есть функция которая принимает класс и возвращает инстанс этого класса
const foo = <S>(arg: S) => S
Эти типы неправильные, потому что когда мы вызовем эту функцию скажем foo(MyClass) => new MyClass() тайпскрипт ее запишет как <S>(arg: S) => typeof S
при этом написать скажем const foo = <S>(arg: S) => InstanceOf<S> по какой то причине не сработает. решением тут будет написать const foo = <S>(arg: { new: (props) => S}) => S
что в приинципе довольно логично, но чудовищно неочевидно, не покрыто тайпскриптовскими доками примерно никак и непонятно почему инстансоф не работает
Forwarded from кана
interface A { a(): string };
interface B { b(): string };
function f(x: A | B): string {
if ("a" in x) {
return x.a();
} else {
return x.b();
}
}
const x = { a: 10, b() { return "hello"; } };
const y: B = x;
f(y);
то есть вот пример, когда тс говорит все ок, а все не ок
Forwarded from tоrіnіngеn
Forwarded from tоrіnіngеn
вот хороший с т.з. эвристик тс код, который падает в рантайме
Forwarded from Pavel Shakhov (pongo)
но если вместо геттера использовать метод, то тс начинает ругаться "возможно null".
т.е. это какой-то баг в тс с геттерами?
т.е. это какой-то баг в тс с геттерами?
Forwarded from Alexey Kuzmichev
тут тайпскрипт полагает, что если мы попали внутрь
if(x.a)
то x.a не может быть null
Forwarded from Alexey Kuzmichev
так что наверное это можно считать багом с геттерами, потому что x.a мутируется в тот момент, когда ты получаешь от него значение
Forwarded from tоrіnіngеn
ну вообще по правде тс не знает о существовании геттеров