Checker
以前に述べたようにcheckerは、TypeScriptを他のJavaScriptトランスパイラよりもユニークに強力にするものです。Checkerはchecker.tsにあり、この時点ではTypeScriptの23k+行(コンパイラの最大部分)です。

Programによる使用方法

checkerprogramにより初期化されます。以下はコールスタックのサンプルです(binderで見たものと同じです):
1
program.getTypeChecker ->
2
ts.createTypeChecker (in checker)->
3
initializeTypeChecker (in checker) ->
4
for each SourceFile `ts.bindSourceFile` (in binder)
5
// followed by
6
for each SourceFile `ts.mergeSymbolTable` (in checker)
Copied!

Emitterとの関連付け

getDiagnosticsが呼び出されると、本当の型チェックが行われます。この機能は、例えば、Program.emitが一度要求されると、CheckerはEmitResolverを返します(ProgramはCheckerのgetEmitResolver関数を呼び出します)。これは単にcreateTypeCheckerのローカル関数の集合です。Emitterを見るときにこれについて再び言及します。
checkSourceFile(createTypeCheckerのローカル関数)の下のコールスタックは以下の通りです。
1
program.emit ->
2
emitWorker (program local) ->
3
createTypeChecker.getEmitResolver ->
4
// First call the following functions local to createTypeChecker
5
call getDiagnostics ->
6
getDiagnosticsWorker ->
7
checkSourceFile
8
9
// then
10
return resolver
11
(already initialized in createTypeChecker using a call to local createResolver())
Copied!