簡體   English   中英

自定義TSLint規則檢查函數參數可賦值性(無雙變量)

[英]Custom TSLint rule to check function parameter assignability (no bivariance)

我只是偶然發現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,我將非常高興。

在尋求實現自定義規則時,TSLint源代碼是一個有用的指導資源。 TSLint倉庫中提供了所有內置規則的源代碼。 大多數規則不需要訪問類型信息。 但是,有兩個做:

這些規則使用ProgramAwareRuleWalker ,它通過TypeChecker使規則可以使用類型信息。

對於如何將一些信息TypeChecker可以在使用打字稿編譯器API documenation

如果啟用了使用ProgramAwareRuleWalker規則,則必須使用--type-check選項運行--type-check並且還必須指定--project

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM