Size: a a a

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

2020 March 26

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
приветы.
подскажите пожалуйста, как исправить

export const int2str = <T>(v: T): T extends number ? string : T =>
 typeof v === 'number' ? v.toString() : v


Type 'string | T' is not assignable to type 'T extends number ? string : T'.
 Type 'string' is not assignable to type 'T extends number ? string : T'
источник

R:

Ryner :: () -> IO ❄️ in TypeScript — русскоговорящее сообщество
Николай Шевляков
приветы.
подскажите пожалуйста, как исправить

export const int2str = <T>(v: T): T extends number ? string : T =>
 typeof v === 'number' ? v.toString() : v


Type 'string | T' is not assignable to type 'T extends number ? string : T'.
 Type 'string' is not assignable to type 'T extends number ? string : T'
А зачем вот эта вся глина с extends?
источник

R:

Ryner :: () -> IO ❄️ in TypeScript — русскоговорящее сообщество
И почему тип T если функция должна принимать int (которого нет в js)?
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
я пытаюсь сделать так, что если передали number, возвращаемый тип чтоб был string
источник

R:

Ryner :: () -> IO ❄️ in TypeScript — русскоговорящее сообщество
Николай Шевляков
я пытаюсь сделать так, что если передали number, возвращаемый тип чтоб был string
А могут передать не number?
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
допустим да. могут передать что угодно. это гипотетический пример
источник

R:

Ryner :: () -> IO ❄️ in TypeScript — русскоговорящее сообщество
Николай Шевляков
допустим да. могут передать что угодно. это гипотетический пример
Вы точно понимаете смысл статической типизации? :)
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
а что не так?
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
Max Syabro
а что не так?
почему тип string | 2 а не просто string
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
укажи руками
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
вход и выход
источник

ЗП

Зигохистоморфный Препроморфизм in TypeScript — русскоговорящее сообщество
Max Syabro
укажи руками
а разве через infer как-то нельзя?
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
Николай Шевляков
приветы.
подскажите пожалуйста, как исправить

export const int2str = <T>(v: T): T extends number ? string : T =>
 typeof v === 'number' ? v.toString() : v


Type 'string | T' is not assignable to type 'T extends number ? string : T'.
 Type 'string' is not assignable to type 'T extends number ? string : T'
я пытался
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
источник

R:

Ryner :: () -> IO ❄️ in TypeScript — русскоговорящее сообщество
const intToString = <T, > (x: T): string | T => typeof x === "number" ? x.toString () : x
источник

R:

Ryner :: () -> IO ❄️ in TypeScript — русскоговорящее сообщество
У меня все работает
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
вообще вот так работает. мне непонятно почему ts не может понять, что если вызываешь функцию с number и явно есть ветка, возвращающая string в этом случае, то тип оказывается string | 2 а не string
источник

R:

Ryner :: () -> IO ❄️ in TypeScript — русскоговорящее сообщество
Николай Шевляков
вообще вот так работает. мне непонятно почему ts не может понять, что если вызываешь функцию с number и явно есть ветка, возвращающая string в этом случае, то тип оказывается string | 2 а не string
TypeScript не имеет type inference
источник

Н

Николай Шевляков in TypeScript — русскоговорящее сообщество
@DoctorRyner спасибо!
источник