xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

TypeScript FAQ All In One

TypeScript FAQ All In One

generic demo bug

interface Named<T> {
  name: string;
  value: T; // <-- added
}
class MyNamed<T> implements Named<T> {
  // name: 'mine'|undefined;
  // name!: 'mine';
  // name: 'mine'="mine";
  name: string = 'mine';
  // value: T;
  value!: T; // <-- added
}
function findByName<T>(x: Named<T>): T {
  // TODO: Implement
  return undefined;
  // ❌
  // Type 'undefined' is not assignable to type 'T'.
  // 'T' could be instantiated with an arbitrary type which could be unrelated to 'undefined'.(2322)
}

var x: MyNamed<string> = {
  name: 'eric',
  value: '2022',
};
var y = findByName(x); // got y: string;

https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#generics

https://github.com/Microsoft/TypeScript/wiki/FAQ#why-doesnt-type-inference-work-on-this-interface-interface-foot--

https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgHJwLYQCYB4AqAfMgN4BQyyImEAXMgM5hSgDmA3BcgG5wA2AVzrJ87ZAHpxyXAFoZyONmw4yAXzII+cBg2QBZAJ7oseIsmAYADnwhZwu4zgLFylSVRr0A5BlAQvAD4CIMowfticblLUWACE3r4g-pES0Z7IPn5eALwARIkQuSkxwkwsIKzI2RkFXinuvILColyNQvEiYu6y8orK2GpkMMEIYMAA9iDIYSEAQkY0zgAUAB70jqaEAJT0+KRc7vgA8gAiR-QAklY2dmBcUBBgAlBTwaHh9VL4BpYoXm8QGY4LzmXQgcZgBQ6YCsagAIxsyDA4yRPz++C8ADoDlIvBjkAhxgI+NhkHCUKAmHBwMA4JBSQB3YBgAAWCimcCgcOZUE5BlRv2QDJZwAQbMJxNJ5OQwQeWnpSJR-xCgPCWKWACYAMwajVbQZkXhQZBrfQLEy4MpsYjVVweLDeaCirwAGla-CE3g1AAZda61Jwjch+dUZth5o5VlsulJWBDg-QrRV2EA

refs

https://www.cnblogs.com/xgqfrms/p/12453976.html



©xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2022-04-01 10:30  xgqfrms  阅读(49)  评论(1编辑  收藏  举报