我只是偶然发现 TypeScript 并不是很严格地检查函数的可分配性:https ://www.typescriptlang.org/docs/handbook/type-compatibility.html#function-parameter-bivariance
不幸的是,对于某些模式,参数二元性错过了重要的类型检查。所以我想知道是否可以建立一个自定义的 TSLint 规则来告诉我什么时候做这样的事情:
interface Base {}
interface BaseEx extends Base { x; }
let fn1: (a: Base) => void;
let fn2: (b: BaseEx) => void;
fn1 = fn2; // TSLint: parameter (a: BaseEx) is not assignable to (b: Base)
但是,关于创建自定义 TSLint 规则的文档似乎相当不完整,我只找到了一个纯语法检查的示例。如果你能给我提供一个资源来学习如何使用像这样的语义规则来扩展 TSLint,我会非常高兴。