2016-08-21 5 views
4

함수 매개 변수 양도성 (NO bivariance)을 확인하는 규칙 . 그래서 나는 내가 이런 일을하고있을 때 말해 사용자 정의 TSLint 규칙을 구축 할 수있을 것인지 궁금하네요 :사용자 정의 TSLint 난 그냥 타이프 라이터 함수의 양도성 확인하는 매우 엄격한 아니라는 사실을 우연히 발견

그러나, 사용자 정의 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를 확장하는 방법을 배울 수있는 리소스를 알려 주시면 정말 기쁩니다.

+0

GitHub 레포를 보았습니까? 그것은 [모든 내장 규칙] (https://github.com/palantir/tslint/tree/master/src/rules)에 대한 소스를 가지고 있습니까? 최고의 리소스는 TSLint 소스 자체 일 것입니다. – cartant

+0

예,하지만이 규칙은 모두 매우 간단합니다.이 규칙은 의미가 아닌 나무를 걷는 것처럼 보입니다. 의미 론적 기능에 접근하기 위해 타이프 스크립트 NPM 모듈을 사용해야 할 수 있습니까? 이 경우 내 질문을 업데이트 할 것입니다. 어떻게 생각해? – bloxx

+0

@bloxx이 작업에 어떤 진전이 있었습니까? 같은 이유로 TypeScript를 사용하지 못하게되었습니다. 그러나 트레이드 오프가 이루어진 것으로 알고 있습니다 (아직 읽지 않은 경우 여기를 참조하십시오. https://github.com/Microsoft/TypeScript/issues/9825).). – pleasedesktop

답변

4

사용자 지정 규칙을 구현하려는 경우 TSLint 소스 코드는 유용한 지침입니다. 모든 내장 규칙의 소스는 TSLint repo에서 확인할 수 있습니다. 대부분의 규칙은 정보를 입력 할 필요가 없습니다. 그러나 다음 두 가지가 있습니다 :

이러한 규칙은 형식 정보를 TypeChecker을 통해 규칙에 사용할 수있게하는 ProgramAwareRuleWalker을 사용합니다.

TypeScript Compiler API documenation에서 어떻게 사용할 수 있는지에 대한 정보가 있습니다.

ProgramAwareRuleWalker을 사용하는 규칙을 사용하는 경우 TSLint는 --type-check 옵션으로 실행해야하고 --project도 지정해야합니다.

+0

위대한, 나는 그것을 알아 차리지 못했다! 나는 이것이 도움이 될 것이라고 생각한다. – bloxx