TSLint обнаруживает ошибку синтаксического анализа в type guard, но компилятор TS не обнаруживает никаких ошибок

#typescript #typescript-typings #tslint

#typescript #typescript-типизации #tslint

Вопрос:

У меня есть следующий метод TypeScript с защитой типа:

 export function isArray(item: any): item is Array<any> {
    return item.constructor === Array;
}
  

Когда я запускаю tslint файл, я получаю следующий вывод:

 1:42  error  Parsing error: Unexpected token, expected "{"

> 1 | export function isArray(item: any): item is Array<any> {
    |                                          ^
  2 |     return item.constructor === Array
  3 | }
  

Type guard выдает какую-то синтаксическую ошибку синтаксического анализа в моем linter. Это всего лишь один пример, это происходило в каждом type guard, который я написал.

Есть какие-нибудь мысли о том, что может быть причиной этой проблемы?Похоже, я не смог найти кого-либо еще с этим в Интернете.


Приложение

Мои версии typescript / tslint:

 "tslib": "1.9.3",
"tslint": "5.13.1",
"tslint-config-prettier": "1.18.0",
"tslint-eslint-rules": "5.4.0",
"tslint-react": "3.6.0",
"typescript": "3.3.3333",
  

Моя tslint конфигурация:

 {
    "extends": [
        "tslint:latest",
        "tslint-react",
        "tslint-eslint-rules",
        "tslint-config-prettier"
    ],
    "rules": {
        "no-submodule-imports": [true, "react-native-vector-icons"],
        "interface-name": [true, "always-prefix"],
        "object-literal-sort-keys": [false],
        "semicolon": [true, "never"],
        "jsdoc-format": [false],
        "valid-jsdoc": [false],
        "no-unnecessary-type-assertion": [true],
        "max-classes-per-file": [false, 2],
    },
    "linterOptions": {
        "exclude": [
            "node_modules",
            "app/**/**.js",
            "packager/**"
        ]
    }
}
  

Комментарии:

1. Я попытался запустить код thins, и была только ошибка linter ERROR: main.ts:1:45 - Array type using 'Array<T>' is forbidden for simple types. Use 'T[]' instead. ERROR: main.ts:2:38 - Unnecessary semicolon . Вы уверены, что версии такие же, как в вопросах?

Ответ №1:

Как вы запускаете TSLint? Возможно, что TSLint и TypeScript вашего проекта отличаются от тех, с которыми вы работаете вручную.

Если вы запускаете TSLint в командной строке, например, с помощью tslint -c tslint.json , попробуйте обновить его и соответствующие библиотеки до последней версии:

 npm i -g tslint@latest typescript@latest tsutils@latest
  

Если через расширение редактора / IDE, убедитесь, что оно и расширение обновлены.