Что такое общие c ограничения в машинописном тексте? - PullRequest
0 голосов
/ 03 августа 2020

extract.ts

function extract1<S>(source: S, key: keyof S) {
  return source[key]
}
function extract2<S, K extends keyof S>(source: S, key: K) {
  return source[key]
}

main.ts

const source = {foo: 1, bar: '2'}

// Type is deduced as `string | number`
const result1 = extract1(source, 'foo')

// Type is deduced as `number`
const result2 = extract2(source, 'foo')

В чем разница между extract1 и extract2, почему тип возвращаемого значения extract2 может быть точно выведен, но не extract1?

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