Я также немного удивлен Литеральное сужение не распространяется на foo
функцию и вместо этого по умолчанию используется тип string
.
const test = 'FooBar';
const barFoo = foo(test);
Однако, когда я объясняю, тип там указывается это не проблема.
const test: 'FooBar' = 'FooBar';
const barFoo = foo(test);
Ну, это то, с чего мы начали.
С небольшим переворотом в функции foo
:
function foo<T extends string>(type: T): { type: T } {
return { type };
}
const test = 'FooBar';
const barFoo = foo(test);
Я искал в результате intellisense, когда я посмотрел на выражение, и теперь оно распространяется типа.