оно правильно гардило значение и возвращало не T & Value<unknown>, а Value<unknown>?
https://www.typescriptlang.org/play?noUncheckedIndexedAccess=true&target=9&jsx=0&suppressImplicitAnyIndexErrors=true&noFallthroughCasesInSwitch=false&ts=5.2.2#code/C4TwDgpgBAogHsATgQwMbAGrIDYFcIAq4EAPAQHxQC8UBUECEAdgCYDOUWepAlkwGYREUABqUA-KKgAuKEwgA3IQChlqbMjYcu+MpQDeyqFDC4ARth6ooAfQU58sgquOoA9kzZJc6N4gAUfDzAPDg6EE4AlFCGxsbAABY8bAB0dg7QNEEhYRlGUAC+LlAA5hDAUPbc-tGxcYjluIhMUInJaVX4+UX5bOWVGf7yAO7hUTH58Ump6dzUchCjecZFPe6eFcnh8-4AtsggZhBjULhMANZMbsNMkbL7h8cZUMmcGSRnl9dMlFQG+Q1gE0Wg8jts+F5kExUBA3Pw3txlGsPF4oKgGshgE85jQ9P5OhFaHdaPRGKxtO9PlcbhIEbp4Eg0JgMkRIHpKLJwnpqP9jDx4YE2OF8RlItFAcCBoiAY1mgthnSICLuJEkap1qiCQBGeYjRX+ADkbDcuwgs3wBtVGoqV2Z3B1NC1ACYAMzqlEVAlO+boiCY7H4ZX4LXRAD0oagwz85w4iB4JQSwDUHql+BdPoxWOFtvCIag4cj0dj8cTQA
не уверен, что это лучшее решение, т.к. в тс не эксперт, но это единственное, к чему мне удалось прийти: const createValue = <T>(value: T): T extends Value<unknown> ? T : Value<T> => { if (isValue(value)) return value as T extends Value<unknown> ? T : Value<T>; return new Value(value) as T extends Value<unknown> ? T : Value<T> }
Обсуждают сегодня