Машинопись: возможно ли вычислить тип * generi c в строковый литерал? - PullRequest
1 голос
/ 29 апреля 2020

Можно ли вычислить тип generi c в строковый литерал, не будучи явным?

Вот пример, который я имею в виду:

function foo<T>(type: T): { type: T } {
    return { type };
}

// type is { type: string } I would like it to be { type: 'FooBar' } without being explicit
const bar = foo('FooBar'); 

// is it possible not to do this and get same result?
const fooBar = foo<'FooBar'>('FooBar'); 
const barFoo = foo('FooBar' as const);

Playground Link

1 Ответ

1 голос
/ 29 апреля 2020

Я также немного удивлен Литеральное сужение не распространяется на 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, когда я посмотрел на выражение, и теперь оно распространяется типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...