Как использовать process.hrtime.bigint - PullRequest
0 голосов
/ 03 апреля 2020

Когда я пишу

const a = process.hrtime.bigint();

Линтинг говорит, что все в порядке, но я вижу ошибку компиляции

error TS2339: Property 'bigint' does not exist on type 'HRTime'.

Что кажется странным, когда я читаю документы https://nodejs.org/api/process.html Так как я могу использовать bigint () в машинописи? Моя версия узла 10.16.2. Я затрудняюсь понять, почему машинопись не позволяет этого.

1 Ответ

1 голос
/ 03 апреля 2020

Несмотря на то, что BigInt находится на стадии 4 и может быть легко использовано в последних версиях браузера и узла, на момент написания вам все равно нужно будет установить TS target config на минимум ES2020 или ESNext:

{
    "compilerOptions": {
        "target": "ESNext"
        ...
    }
}

Что касается самой проблемы hrtime.bigint(), вам, возможно, придется либо добавить / обновить свою зависимость @types/node объявлений объявлений типа и / или сам узел ...

В моем собственном проекте я также использовал этот код ниже для обеспечения обратной совместимости со старыми версиями Node (хотя и с очевидной нехваткой точности):

/**
 * If available, returns wrapper for `process.hrtime.bigint()` else
 * falls back to `Date.now()`. In all cases, returns a nanosec-scale
 * timestamp, either as `bigint` or `number`.
 */
export const now =
    typeof BigInt !== "undefined"
        ? typeof process !== "undefined" &&
          typeof process.hrtime !== "undefined" &&
          typeof process.hrtime.bigint === "function"
            ? () => process.hrtime.bigint()
            : () => BigInt(Date.now() * 1e6)
        : () => Date.now() * 1e6;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...