Я недавно обновил с typescript@2.9.x
до typescript@3.0.3
, и теперь у меня есть ошибки в моей программе транспилятора. Вы можете найти исходный код на Github .
Транспортер использует API машинописи с ts.createProgram(...)
и program.getTypeChecker()
, чтобы проверить фактический тип текущего узла. Вы можете увидеть настройку прозрачности в src/compiler/Compiler.ts
.
Мои тесты все еще работают, но тесты типов массивов перестали работать. Вот ссылка Travis CI для просмотра результатов теста.
Я предполагаю, что функция Types.isArray()
в src/transpiler/Types.ts
возвращает неправильное логическое значение. До typescript@3
эта функция получала синтаксические элементы вида ts.SyntaxKind.ArrayType
и ts.SyntaxKind.TupleType
. Когда я отлаживаю свои тесты с помощью кода типа массива, например:
const testArray: number[] = [1,2,3,4]
const secondIndex: number = testArray[2];
Types.isArray()
получит узел с синтаксическим видом ts.SyntaxKind.TypeLiteral
.
В Typescript был изменен элемент типа кортежа для включения обобщений. Это TypeLiteral
? Эти критические изменения могут повлиять или не повлиять на мой код.
Если есть какие-либо дополнительные вопросы, пожалуйста, задавайте, я постараюсь обновить этот пост.
Спасибо за вашу помощь!