Bagikan melalui


util module

Modul node:util mendukung kebutuhan API internal Node.js. Banyak utilitas juga berguna untuk pengembang aplikasi dan modul. Untuk mengaksesnya:

import util from 'node:util';

Lihat sumber

Kelas

MIMEParams

API MIMEParams menyediakan akses baca dan tulis ke parameter MIMEType.

MIMEType

Implementasi kelas MIMEType.

Sesuai dengan konvensi browser, semua properti objek MIMEType diimplementasikan sebagai getter dan setter pada prototipe kelas, bukan sebagai properti data pada objek itu sendiri.

String MIME adalah string terstruktur yang berisi beberapa komponen yang bermakna. Saat diurai, objek MIMEType dikembalikan yang berisi properti untuk masing-masing komponen ini.

TextDecoder

Implementasi WHATWG Encoding StandardTextDecoder API.

const decoder = new TextDecoder();
const u8arr = new Uint8Array([72, 101, 108, 108, 111]);
console.log(decoder.decode(u8arr)); // Hello
TextEncoder

Implementasi WHATWG Encoding StandardTextEncoder API. Semua instans TextEncoder hanya mendukung pengodean UTF-8.

const encoder = new TextEncoder();
const uint8array = encoder.encode('this is some data');

Kelas TextEncoder juga tersedia di objek global.

Antarmuka

CallSiteObject
CustomPromisifyLegacy
CustomPromisifySymbol
DebugLogger
EncodeIntoResult
InspectOptions
InspectOptionsStylized
IsDeepStrictEqualOptions
ParseArgsConfig
ParseArgsOptionDescriptor
ParseArgsOptionsConfig
StyleTextOptions

Alias Jenis

CustomInspectFunction
CustomPromisify
DebugLoggerFunction
DiffEntry
ParseArgsOptionsType

Jenis argumen yang digunakan dalam parseArgs.

Style

Fungsi

aborted(AbortSignal, any)

Mendengarkan peristiwa batalkan pada signal yang disediakan dan mengembalikan janji yang diselesaikan saat signal dibatalkan. Jika resource disediakan, itu lemah mereferensikan objek terkait operasi, jadi jika resource adalah sampah yang dikumpulkan sebelum signal dibatalkan, maka janji yang dikembalikan akan tetap tertunda. Ini mencegah kebocoran memori dalam operasi jangka panjang atau tidak dapat dibatalkan.

import { aborted } from 'node:util';

// Obtain an object with an abortable signal, like a custom resource or operation.
const dependent = obtainSomethingAbortable();

// Pass `dependent` as the resource, indicating the promise should only resolve
// if `dependent` is still in memory when the signal is aborted.
aborted(dependent.signal, dependent).then(() => {
  // This code runs when `dependent` is aborted.
  console.log('Dependent resource was aborted.');
});

// Simulate an event that triggers the abort.
dependent.on('event', () => {
  dependent.abort(); // This will cause the `aborted` promise to resolve.
});
addParamToUrl(string, string, string)

Menambahkan parameter ke url yang diberikan

assign(any[])

Menyalin nilai semua properti yang dapat dijumlahkan dari satu atau beberapa objek sumber ke objek target, dan mengembalikan objek target.

autoAuthInEmbedUrl(string)

Memeriksa apakah url semat berisi autoAuth=true.

callbackify(() => Promise<void>)

Mengambil fungsi async (atau fungsi yang mengembalikan Promise) dan mengembalikan fungsi setelah gaya panggilan balik pertama kesalahan, yaitu mengambil panggilan balik (err, value) => ... sebagai argumen terakhir. Dalam panggilan balik, argumen pertama akan menjadi alasan penolakan (atau null jika Promise diselesaikan), dan argumen kedua akan menjadi nilai yang diselesaikan.

import { callbackify } from 'node:util';

async function fn() {
  return 'hello world';
}
const callbackFunction = callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

Akan mencetak:

hello world

Panggilan balik dijalankan secara asinkron, dan akan memiliki jejak tumpukan terbatas. Jika panggilan balik dilemparkan, proses akan memancarkan peristiwa 'uncaughtException', dan jika tidak ditangani akan keluar.

Karena null memiliki arti khusus sebagai argumen pertama untuk panggilan balik, jika fungsi yang dibungkus menolak Promise dengan nilai falsy sebagai alasan, nilai dibungkus dalam Error dengan nilai asli yang disimpan dalam bidang bernama reason.

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // When the Promise was rejected with `null` it is wrapped with an Error and
  // the original value is stored in `reason`.
  err && Object.hasOwn(err, 'reason') && err.reason === null;  // true
});
callbackify<T1, T2, T3, T4, T5, T6, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>)
callbackify<T1, T2, T3, T4, T5, T6>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>)
callbackify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>)
callbackify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>)
callbackify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>)
callbackify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>)
callbackify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>)
callbackify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3) => Promise<void>)
callbackify<T1, T2, TResult>((arg1: T1, arg2: T2) => Promise<TResult>)
callbackify<T1, T2>((arg1: T1, arg2: T2) => Promise<void>)
callbackify<T1, TResult>((arg1: T1) => Promise<TResult>)
callbackify<T1>((arg1: T1) => Promise<void>)
callbackify<TResult>(() => Promise<TResult>)
createRandomString()

Menghasilkan string karakter 5 hingga 6 acak.

debuglog(string, (fn: DebugLoggerFunction) => void)

Metode util.debuglog() ini digunakan untuk membuat fungsi yang secara kondisional menulis pesan debug berdasarkan stderr keberadaan NODE_DEBUG variabel lingkungan. Jika nama section muncul dalam nilai variabel lingkungan tersebut, maka fungsi yang dikembalikan beroperasi mirip dengan console.error(). Jika tidak, maka fungsi yang dikembalikan adalah no-op.

import { debuglog } from 'node:util';
const log = debuglog('foo');

log('hello from foo [%d]', 123);

Jika program ini dijalankan dengan NODE_DEBUG=foo di lingkungan, maka program ini akan menghasilkan sesuatu seperti:

FOO 3245: hello from foo [123]

di mana 3245 adalah id proses. Jika tidak dijalankan dengan set variabel lingkungan tersebut, maka tidak akan mencetak apa pun.

section mendukung wildcard juga:

import { debuglog } from 'node:util';
const log = debuglog('foo');

log('hi there, it\'s foo-bar [%d]', 2333);

jika dijalankan dengan NODE_DEBUG=foo* di lingkungan, maka itu akan menghasilkan sesuatu seperti:

FOO-BAR 3257: hi there, it's foo-bar [2333]

Beberapa nama yang dipisahkan section koma dapat ditentukan dalam NODE_DEBUG variabel lingkungan: NODE_DEBUG=fs,net,tls.

Argumen callback opsional dapat digunakan untuk mengganti fungsi pengelogan dengan fungsi berbeda yang tidak memiliki inisialisasi atau pembungkusan yang tidak perlu.

import { debuglog } from 'node:util';
let log = debuglog('internals', (debug) => {
  // Replace with a logging function that optimizes out
  // testing if the section is enabled
  log = debug;
});
deprecate<T>(T, string, string)

Metode util.deprecate() membungkus fn (yang mungkin merupakan fungsi atau kelas) sedemikian sehingga ditandai sebagai tidak digunakan lagi.

import { deprecate } from 'node:util';

export const obsoleteFunction = deprecate(() => {
  // Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

Ketika dipanggil, util.deprecate() akan mengembalikan fungsi yang akan memancarkan DeprecationWarning menggunakan peristiwa 'warning'. Peringatan akan dipancarkan dan dicetak ke stderr pertama kali fungsi yang dikembalikan dipanggil. Setelah peringatan dipancarkan, fungsi yang dibungkus dipanggil tanpa memancarkan peringatan.

Jika code opsional yang sama disediakan dalam beberapa panggilan ke util.deprecate(), peringatan akan dipancarkan hanya sekali untuk codetersebut.

import { deprecate } from 'node:util';

const fn1 = deprecate(
  () => 'a value',
  'deprecation message',
  'DEP0001',
);
const fn2 = deprecate(
  () => 'a  different value',
  'other dep message',
  'DEP0001',
);
fn1(); // Emits a deprecation warning with code DEP0001
fn2(); // Does not emit a deprecation warning because it has the same code

Jika bendera baris perintah --no-deprecation atau --no-warnings digunakan, atau jika properti process.noDeprecation diatur ke true sebelumnya ke peringatan penghentian pertama, metode util.deprecate() tidak melakukan apa pun.

Jika bendera baris perintah --trace-deprecation atau --trace-warnings diatur, atau properti process.traceDeprecation diatur ke true, peringatan dan jejak tumpukan dicetak ke stderr pertama kali fungsi yang tidak digunakan lagi dipanggil.

Jika bendera baris perintah --throw-deprecation diatur, atau properti process.throwDeprecation diatur ke true, maka pengecualian akan dilemparkan ketika fungsi yang tidak digunakan lagi dipanggil.

Bendera baris perintah --throw-deprecation dan properti process.throwDeprecation lebih diutamakan daripada --trace-deprecation dan process.traceDeprecation.

diff(string | (readonly string[]), string | (readonly string[]))

util.diff() membandingkan dua nilai string atau array dan mengembalikan array entri perbedaan. Ini menggunakan algoritma Myers diff untuk menghitung perbedaan minimal, yang merupakan algoritma yang sama yang digunakan secara internal oleh pesan kesalahan pernyataan.

Jika nilainya sama, array kosong dikembalikan.

const { diff } = require('node:util');

// Comparing strings
const actualString = '12345678';
const expectedString = '12!!5!7!';
console.log(diff(actualString, expectedString));
// [
//   [0, '1'],
//   [0, '2'],
//   [1, '3'],
//   [1, '4'],
//   [-1, '!'],
//   [-1, '!'],
//   [0, '5'],
//   [1, '6'],
//   [-1, '!'],
//   [0, '7'],
//   [1, '8'],
//   [-1, '!'],
// ]
// Comparing arrays
const actualArray = ['1', '2', '3'];
const expectedArray = ['1', '3', '4'];
console.log(diff(actualArray, expectedArray));
// [
//   [0, '1'],
//   [1, '2'],
//   [0, '3'],
//   [-1, '4'],
// ]
// Equal values return empty array
console.log(diff('same', 'same'));
// []
find<T>((x: T) => boolean, T[])

Menemukan nilai pertama dalam array yang cocok dengan predikat yang ditentukan.

findIndex<T>((x: T) => boolean, T[])

Menemukan indeks nilai pertama dalam array yang cocok dengan predikat yang ditentukan.

format(any, any[])

Metode util.format() mengembalikan string yang diformat menggunakan argumen pertama sebagai string format printf-like yang dapat berisi penentu format nol atau lebih. Setiap penentu diganti dengan nilai yang dikonversi dari argumen yang sesuai. Penentu yang didukung adalah:

Jika penentu tidak memiliki argumen yang sesuai, itu tidak diganti:

util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

Nilai yang bukan bagian dari string format diformat menggunakan util.inspect() jika jenisnya tidak string.

Jika ada lebih banyak argumen yang diteruskan ke metode util.format() daripada jumlah penentu, argumen tambahan digabungkan ke string yang dikembalikan, dipisahkan oleh spasi:

util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz'

Jika argumen pertama tidak berisi penentu format yang valid, util.format() mengembalikan string yang merupakan penggabungan semua argumen yang dipisahkan oleh spasi:

util.format(1, 2, 3);
// Returns: '1 2 3'

Jika hanya satu argumen yang diteruskan ke util.format(), argumen dikembalikan apa adanya tanpa pemformatan apa pun:

util.format('%% %s');
// Returns: '%% %s'

util.format() adalah metode sinkron yang dimaksudkan sebagai alat penelusuran kesalahan. Beberapa nilai input dapat memiliki overhead performa signifikan yang dapat memblokir perulangan peristiwa. Gunakan fungsi ini dengan hati-hati dan jangan pernah berada di jalur kode panas.

formatWithOptions(InspectOptions, any, any[])

Fungsi ini identik dengan format , kecuali karena dibutuhkan argumen inspectOptions yang menentukan opsi yang diteruskan ke memeriksa.

util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
// Returns 'See object { foo: 42 }', where `42` is colored as a number
// when printed to a terminal.
generateUUID()

Menghasilkan uuid 20 karakter.

getCallSites(GetCallSitesOptions)
getCallSites(number, GetCallSitesOptions)

Mengembalikan array objek situs panggilan yang berisi tumpukan fungsi pemanggil.

import { getCallSites } from 'node:util';

function exampleFunction() {
  const callSites = getCallSites();

  console.log('Call Sites:');
  callSites.forEach((callSite, index) => {
    console.log(`CallSite ${index + 1}:`);
    console.log(`Function Name: ${callSite.functionName}`);
    console.log(`Script Name: ${callSite.scriptName}`);
    console.log(`Line Number: ${callSite.lineNumber}`);
    console.log(`Column Number: ${callSite.column}`);
  });
  // CallSite 1:
  // Function Name: exampleFunction
  // Script Name: /home/example.js
  // Line Number: 5
  // Column Number: 26

  // CallSite 2:
  // Function Name: anotherFunction
  // Script Name: /home/example.js
  // Line Number: 22
  // Column Number: 3

  // ...
}

// A function to simulate another stack layer
function anotherFunction() {
  exampleFunction();
}

anotherFunction();

Dimungkinkan untuk membangun kembali lokasi asli dengan mengatur opsi sourceMap ke true. Jika peta sumber tidak tersedia, lokasi asli akan sama dengan lokasi saat ini. Ketika bendera --enable-source-maps diaktifkan, misalnya saat menggunakan --experimental-transform-types, sourceMap akan benar secara default.

import { getCallSites } from 'node:util';

interface Foo {
  foo: string;
}

const callSites = getCallSites({ sourceMap: true });

// With sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 7
// Column Number: 26

// Without sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 2
// Column Number: 26
getRandomValue()

Mengembalikan angka acak

getSystemErrorMap()

Mengembalikan Peta semua kode kesalahan sistem yang tersedia dari API Node.js. Pemetaan antara kode kesalahan dan nama kesalahan bergantung pada platform. Lihat Common System Errors untuk nama kesalahan umum.

fs.access('file/that/does/not/exist', (err) => {
  const errorMap = util.getSystemErrorMap();
  const name = errorMap.get(err.errno);
  console.error(name);  // ENOENT
});
getSystemErrorMessage(number)

Mengembalikan pesan string untuk kode kesalahan numerik yang berasal dari API Node.js. Pemetaan antara kode kesalahan dan pesan string bergantung pada platform.

fs.access('file/that/does/not/exist', (err) => {
  const message = util.getSystemErrorMessage(err.errno);
  console.error(message);  // no such file or directory
});
getSystemErrorName(number)

Mengembalikan nama string untuk kode kesalahan numerik yang berasal dari API Node.js. Pemetaan antara kode kesalahan dan nama kesalahan bergantung pada platform. Lihat Common System Errors untuk nama kesalahan umum.

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});
getTimeDiffInMilliseconds(Date, Date)

Mengembalikan interval waktu antara dua tanggal dalam milidetik

inherits(unknown, unknown)

Penggunaan util.inherits() tidak disarankan. Gunakan class ES6 dan kata kunci extends untuk mendapatkan dukungan pewarisan tingkat bahasa. Perhatikan juga bahwa kedua gaya tersebut yang tidak kompatibel secara semantik.

Mewarisi metode prototipe dari satu konstruktor ke dalam yang lain. Prototipe constructor akan diatur ke objek baru yang dibuat dari superConstructor.

Ini terutama menambahkan beberapa validasi input di atas Object.setPrototypeOf(constructor.prototype, superConstructor.prototype). Sebagai kenyamanan tambahan, superConstructor dapat diakses melalui properti constructor.super_.

const util = require('node:util');
const EventEmitter = require('node:events');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"

Contoh ES6 menggunakan class dan extends:

import EventEmitter from 'node:events';

class MyStream extends EventEmitter {
  write(data) {
    this.emit('data', data);
  }
}

const stream = new MyStream();

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('With ES6');
inspect(any, boolean, null | number, boolean)

Metode util.inspect() mengembalikan representasi string object yang dimaksudkan untuk penelusuran kesalahan. Output util.inspect dapat berubah kapan saja dan tidak boleh diandalkan secara terprogram. options tambahan dapat diteruskan yang mengubah hasilnya. util.inspect() akan menggunakan nama dan/atau Symbol.toStringTag properti konstruktor untuk membuat tag yang dapat diidentifikasi untuk nilai yang diperiksa.

class Foo {
  get [Symbol.toStringTag]() {
    return 'bar';
  }
}

class Bar {}

const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });

util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz);       // '[foo] {}'

Referensi melingkar menunjuk ke jangkarnya dengan menggunakan indeks referensi:

import { inspect } from 'node:util';

const obj = {};
obj.a = [obj];
obj.b = {};
obj.b.inner = obj.b;
obj.b.obj = obj;

console.log(inspect(obj));
// <ref *1> {
//   a: [ [Circular *1] ],
//   b: <ref *2> { inner: [Circular *2], obj: [Circular *1] }
// }

Contoh berikut memeriksa semua properti objek util:

import util from 'node:util';

console.log(util.inspect(util, { showHidden: true, depth: null }));

Contoh berikut menyoroti efek opsi compact:

import { inspect } from 'node:util';

const o = {
  a: [1, 2, [[
    'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' +
      'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.',
    'test',
    'foo']], 4],
  b: new Map([['za', 1], ['zb', 'test']]),
};
console.log(inspect(o, { compact: true, depth: 5, breakLength: 80 }));

// { a:
//   [ 1,
//     2,
//     [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line
//           'test',
//           'foo' ] ],
//     4 ],
//   b: Map(2) { 'za' => 1, 'zb' => 'test' } }

// Setting `compact` to false or an integer creates more reader friendly output.
console.log(inspect(o, { compact: false, depth: 5, breakLength: 80 }));

// {
//   a: [
//     1,
//     2,
//     [
//       [
//         'Lorem ipsum dolor sit amet,\n' +
//           'consectetur adipiscing elit, sed do eiusmod \n' +
//           'tempor incididunt ut labore et dolore magna aliqua.',
//         'test',
//         'foo'
//       ]
//     ],
//     4
//   ],
//   b: Map(2) {
//     'za' => 1,
//     'zb' => 'test'
//   }
// }

// Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a
// single line.

Opsi showHidden memungkinkan entri WeakMap dan WeakSet diperiksa. Jika ada lebih banyak entri daripada maxArrayLength, tidak ada jaminan entri mana yang ditampilkan. Itu berarti mengambil entri WeakSet yang sama dua kali dapat mengakibatkan output yang berbeda. Selain itu, entri tanpa referensi yang kuat yang tersisa dapat menjadi sampah yang dikumpulkan kapan saja.

import { inspect } from 'node:util';

const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);

console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }

Opsi sorted memastikan bahwa urutan penyisipan properti objek tidak memengaruhi hasil util.inspect().

import { inspect } from 'node:util';
import assert from 'node:assert';

const o1 = {
  b: [2, 3, 1],
  a: '`a` comes before `b`',
  c: new Set([2, 3, 1]),
};
console.log(inspect(o1, { sorted: true }));
// { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } }
console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) }));
// { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' }

const o2 = {
  c: new Set([2, 1, 3]),
  a: '`a` comes before `b`',
  b: [2, 3, 1],
};
assert.strict.equal(
  inspect(o1, { sorted: true }),
  inspect(o2, { sorted: true }),
);

Opsi numericSeparator menambahkan garis bawah setiap tiga digit ke semua angka.

import { inspect } from 'node:util';

const thousand = 1000;
const million = 1000000;
const bigNumber = 123456789n;
const bigDecimal = 1234.12345;

console.log(inspect(thousand, { numericSeparator: true }));
// 1_000
console.log(inspect(million, { numericSeparator: true }));
// 1_000_000
console.log(inspect(bigNumber, { numericSeparator: true }));
// 123_456_789n
console.log(inspect(bigDecimal, { numericSeparator: true }));
// 1_234.123_45

util.inspect() adalah metode sinkron yang ditujukan untuk penelusuran kesalahan. Panjang output maksimumnya adalah sekitar 128 MiB. Input yang menghasilkan output yang lebih panjang akan dipotong.

inspect(any, InspectOptions)
isArray(unknown)

Alias untuk Array.isArray().

Mengembalikan true jika object yang diberikan adalah Array. Jika tidak, mengembalikan false.

import util from 'node:util';

util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false
isCreate(string)

Memeriksa apakah jenis semat adalah untuk membuat

isDeepStrictEqual(unknown, unknown, IsDeepStrictEqualOptions)

Mengembalikan true jika ada kesetaraan ketat yang mendalam antara val1 dan val2. Jika tidak, mengembalikan false.

Lihat assert.deepStrictEqual() untuk informasi selengkapnya tentang kesetaraan ketat yang mendalam.

isRDLEmbed(string)

Memeriksa apakah url semat adalah untuk laporan RDL.

isSavedInternal(HttpPostMessage, string, Window)

Memeriksa apakah laporan disimpan.

parseArgs<T>(T)

Menyediakan API tingkat yang lebih tinggi untuk penguraian argumen baris perintah daripada berinteraksi dengan process.argv secara langsung. Mengambil spesifikasi untuk argumen yang diharapkan dan mengembalikan objek terstruktur dengan opsi dan posisi yang diurai.

import { parseArgs } from 'node:util';
const args = ['-f', '--bar', 'b'];
const options = {
  foo: {
    type: 'boolean',
    short: 'f',
  },
  bar: {
    type: 'string',
  },
};
const {
  values,
  positionals,
} = parseArgs({ args, options });
console.log(values, positionals);
// Prints: [Object: null prototype] { foo: true, bar: 'b' } []
parseEnv(string)

Stabilitas: 1.1 - Pengembangan aktif Mengingat contoh file .env:

import { parseEnv } from 'node:util';

parseEnv('HELLO=world\nHELLO=oh my\n');
// Returns: { HELLO: 'oh my' }
promisify((callback: (err?: any) => void) => void)
promisify(Function)
promisify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void)
promisify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void)
promisify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void)
promisify<T1, T2, TResult>((arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2>((arg1: T1, arg2: T2, callback: (err?: any) => void) => void)
promisify<T1, TResult>((arg1: T1, callback: (err: any, result: TResult) => void) => void)
promisify<T1>((arg1: T1, callback: (err?: any) => void) => void)
promisify<TCustom>(CustomPromisify<TCustom>)

Mengambil fungsi mengikuti gaya panggilan balik kesalahan-pertama umum, yaitu mengambil panggilan balik (err, value) => ... sebagai argumen terakhir, dan mengembalikan versi yang mengembalikan janji.

import { promisify } from 'node:util';
import { stat } from 'node:fs';

const promisifiedStat = promisify(stat);
promisifiedStat('.').then((stats) => {
  // Do something with `stats`
}).catch((error) => {
  // Handle the error.
});

Atau, secara setara menggunakan async function:

import { promisify } from 'node:util';
import { stat } from 'node:fs';

const promisifiedStat = promisify(stat);

async function callStat() {
  const stats = await promisifiedStat('.');
  console.log(`This directory is owned by ${stats.uid}`);
}

callStat();

Jika ada properti yang original[util.promisify.custom] ada, promisify akan mengembalikan nilainya, lihat Fungsi kustom yang dipromisikan.

promisify() mengasumsikan bahwa original adalah fungsi yang mengambil panggilan balik sebagai argumen akhirnya dalam semua kasus. Jika original bukan fungsi, promisify() akan melemparkan kesalahan. Jika original adalah fungsi tetapi argumen terakhirnya bukan panggilan balik kesalahan-pertama, itu masih akan diteruskan panggilan balik kesalahan-pertama sebagai argumen terakhirnya.

Menggunakan promisify() pada metode kelas atau metode lain yang menggunakan this mungkin tidak berfungsi seperti yang diharapkan kecuali ditangani secara khusus:

import { promisify } from 'node:util';

class Foo {
  constructor() {
    this.a = 42;
  }

  bar(callback) {
    callback(null, this.a);
  }
}

const foo = new Foo();

const naiveBar = promisify(foo.bar);
// TypeError: Cannot read properties of undefined (reading 'a')
// naiveBar().then(a => console.log(a));

naiveBar.call(foo).then((a) => console.log(a)); // '42'

const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'
promisify<TResult>((callback: (err: any, result: TResult) => void) => void)
raiseCustomEvent(HTMLElement, string, any)

Menaikkan peristiwa kustom dengan data peristiwa pada elemen HTML yang ditentukan.

remove<T>((x: T) => boolean, T[])
setTraceSigInt(boolean)

Aktifkan atau nonaktifkan pencetakan jejak tumpukan pada SIGINT. API hanya tersedia di utas utama.

stripVTControlCharacters(string)

Mengembalikan str dengan kode escape ANSI yang dihapus.

console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m'));
// Prints "value"
styleText(ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[], string, StyleTextOptions)

Fungsi ini mengembalikan teks yang diformat mengingat yang format diteruskan untuk pencetakan di terminal. Ini mengetahui kemampuan dan tindakan terminal sesuai dengan konfigurasi yang ditetapkan melalui NO_COLORvariabel lingkungan , NODE_DISABLE_COLORS dan FORCE_COLOR .

import { styleText } from 'node:util';
import { stderr } from 'node:process';

const successMessage = styleText('green', 'Success!');
console.log(successMessage);

const errorMessage = styleText(
  'red',
  'Error! Error!',
  // Validate if process.stderr has TTY
  { stream: stderr },
);
console.error(errorMessage);

util.inspect.colors juga menyediakan format teks seperti italic, dan underline dan Anda dapat menggabungkan keduanya:

console.log(
  util.styleText(['underline', 'italic'], 'My italic underlined message'),
);

Saat meneruskan array format, urutan format yang diterapkan dibiarkan ke kanan sehingga gaya berikut mungkin menimpa yang sebelumnya.

console.log(
  util.styleText(['red', 'green'], 'text'), // green
);

Nilai none format khusus tidak menerapkan gaya tambahan ke teks.

Daftar lengkap format dapat ditemukan di pengubah .

toUSVString(string)

Mengembalikan string setelah mengganti titik kode pengganti apa pun (atau setara, unit kode pengganti yang tidak berpasangan) dengan U+FFFD "karakter pengganti" Unicode.

transferableAbortController()

Membuat dan mengembalikan instans AbortController yang AbortSignal nya ditandai sebagai dapat ditransfer dan dapat digunakan dengan structuredClone() atau postMessage().

transferableAbortSignal(AbortSignal)

Menandai AbortSignal yang diberikan sebagai dapat ditransfer sehingga dapat digunakan denganstructuredClone() dan postMessage().

const signal = transferableAbortSignal(AbortSignal.timeout(100));
const channel = new MessageChannel();
channel.port2.postMessage(signal, [signal]);

Detail Fungsi

aborted(AbortSignal, any)

Mendengarkan peristiwa batalkan pada signal yang disediakan dan mengembalikan janji yang diselesaikan saat signal dibatalkan. Jika resource disediakan, itu lemah mereferensikan objek terkait operasi, jadi jika resource adalah sampah yang dikumpulkan sebelum signal dibatalkan, maka janji yang dikembalikan akan tetap tertunda. Ini mencegah kebocoran memori dalam operasi jangka panjang atau tidak dapat dibatalkan.

import { aborted } from 'node:util';

// Obtain an object with an abortable signal, like a custom resource or operation.
const dependent = obtainSomethingAbortable();

// Pass `dependent` as the resource, indicating the promise should only resolve
// if `dependent` is still in memory when the signal is aborted.
aborted(dependent.signal, dependent).then(() => {
  // This code runs when `dependent` is aborted.
  console.log('Dependent resource was aborted.');
});

// Simulate an event that triggers the abort.
dependent.on('event', () => {
  dependent.abort(); // This will cause the `aborted` promise to resolve.
});
function aborted(signal: AbortSignal, resource: any): Promise<void>

Parameter

signal

AbortSignal

resource

any

Objek non-null apa pun yang terkait dengan operasi yang dapat dibatalkan dan dipegang dengan lemah. Jika resource sampah dikumpulkan sebelum signal dibatalkan, janji tetap tertunda, memungkinkan Node.js berhenti melacaknya. Ini membantu mencegah kebocoran memori dalam operasi yang berjalan lama atau tidak dapat dibatalkan.

Mengembalikan

Promise<void>

addParamToUrl(string, string, string)

Menambahkan parameter ke url yang diberikan

function addParamToUrl(url: string, paramName: string, value: string): string

Parameter

url

string

paramName

string

value

string

Mengembalikan

string

assign(any[])

Menyalin nilai semua properti yang dapat dijumlahkan dari satu atau beberapa objek sumber ke objek target, dan mengembalikan objek target.

function assign(args: any[]): any

Parameter

args

any[]

Mengembalikan

any

autoAuthInEmbedUrl(string)

Memeriksa apakah url semat berisi autoAuth=true.

function autoAuthInEmbedUrl(embedUrl: string): boolean

Parameter

embedUrl

string

Mengembalikan

boolean

callbackify(() => Promise<void>)

Mengambil fungsi async (atau fungsi yang mengembalikan Promise) dan mengembalikan fungsi setelah gaya panggilan balik pertama kesalahan, yaitu mengambil panggilan balik (err, value) => ... sebagai argumen terakhir. Dalam panggilan balik, argumen pertama akan menjadi alasan penolakan (atau null jika Promise diselesaikan), dan argumen kedua akan menjadi nilai yang diselesaikan.

import { callbackify } from 'node:util';

async function fn() {
  return 'hello world';
}
const callbackFunction = callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

Akan mencetak:

hello world

Panggilan balik dijalankan secara asinkron, dan akan memiliki jejak tumpukan terbatas. Jika panggilan balik dilemparkan, proses akan memancarkan peristiwa 'uncaughtException', dan jika tidak ditangani akan keluar.

Karena null memiliki arti khusus sebagai argumen pertama untuk panggilan balik, jika fungsi yang dibungkus menolak Promise dengan nilai falsy sebagai alasan, nilai dibungkus dalam Error dengan nilai asli yang disimpan dalam bidang bernama reason.

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // When the Promise was rejected with `null` it is wrapped with an Error and
  // the original value is stored in `reason`.
  err && Object.hasOwn(err, 'reason') && err.reason === null;  // true
});
function callbackify(fn: () => Promise<void>): (callback: (err: NodeJS.ErrnoException) => void) => void

Parameter

fn

() => Promise<void>

Fungsi async

Mengembalikan

(callback: (err: NodeJS.ErrnoException) => void) => void

fungsi gaya panggilan balik

callbackify<T1, T2, T3, T4, T5, T6, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, T5, T6, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4, T5, T6>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>)

function callbackify<T1, T2, T3, T4, T5, T6>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>)

function callbackify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>)

function callbackify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>)

function callbackify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3) => Promise<void>)

function callbackify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3) => Promise<void>

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, TResult>((arg1: T1, arg2: T2) => Promise<TResult>)

function callbackify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2) => Promise<TResult>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

Parameter

fn

(arg1: T1, arg2: T2) => Promise<TResult>

Mengembalikan

(arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2>((arg1: T1, arg2: T2) => Promise<void>)

function callbackify<T1, T2>(fn: (arg1: T1, arg2: T2) => Promise<void>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void

Parameter

fn

(arg1: T1, arg2: T2) => Promise<void>

Mengembalikan

(arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, TResult>((arg1: T1) => Promise<TResult>)

function callbackify<T1, TResult>(fn: (arg1: T1) => Promise<TResult>): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

Parameter

fn

(arg1: T1) => Promise<TResult>

Mengembalikan

(arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

callbackify<T1>((arg1: T1) => Promise<void>)

function callbackify<T1>(fn: (arg1: T1) => Promise<void>): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void

Parameter

fn

(arg1: T1) => Promise<void>

Mengembalikan

(arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<TResult>(() => Promise<TResult>)

function callbackify<TResult>(fn: () => Promise<TResult>): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

Parameter

fn

() => Promise<TResult>

Mengembalikan

(callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

createRandomString()

Menghasilkan string karakter 5 hingga 6 acak.

function createRandomString(): string

Mengembalikan

string

debuglog(string, (fn: DebugLoggerFunction) => void)

Metode util.debuglog() ini digunakan untuk membuat fungsi yang secara kondisional menulis pesan debug berdasarkan stderr keberadaan NODE_DEBUG variabel lingkungan. Jika nama section muncul dalam nilai variabel lingkungan tersebut, maka fungsi yang dikembalikan beroperasi mirip dengan console.error(). Jika tidak, maka fungsi yang dikembalikan adalah no-op.

import { debuglog } from 'node:util';
const log = debuglog('foo');

log('hello from foo [%d]', 123);

Jika program ini dijalankan dengan NODE_DEBUG=foo di lingkungan, maka program ini akan menghasilkan sesuatu seperti:

FOO 3245: hello from foo [123]

di mana 3245 adalah id proses. Jika tidak dijalankan dengan set variabel lingkungan tersebut, maka tidak akan mencetak apa pun.

section mendukung wildcard juga:

import { debuglog } from 'node:util';
const log = debuglog('foo');

log('hi there, it\'s foo-bar [%d]', 2333);

jika dijalankan dengan NODE_DEBUG=foo* di lingkungan, maka itu akan menghasilkan sesuatu seperti:

FOO-BAR 3257: hi there, it's foo-bar [2333]

Beberapa nama yang dipisahkan section koma dapat ditentukan dalam NODE_DEBUG variabel lingkungan: NODE_DEBUG=fs,net,tls.

Argumen callback opsional dapat digunakan untuk mengganti fungsi pengelogan dengan fungsi berbeda yang tidak memiliki inisialisasi atau pembungkusan yang tidak perlu.

import { debuglog } from 'node:util';
let log = debuglog('internals', (debug) => {
  // Replace with a logging function that optimizes out
  // testing if the section is enabled
  log = debug;
});
function debuglog(section: string, callback?: (fn: DebugLoggerFunction) => void): DebugLogger

Parameter

section

string

String yang mengidentifikasi bagian aplikasi tempat fungsi debuglog sedang dibuat.

callback

(fn: DebugLoggerFunction) => void

Panggilan balik yang dipanggil saat pertama kali fungsi pengelogan dipanggil dengan argumen fungsi yang merupakan fungsi pengelogan yang lebih dioptimalkan.

Mengembalikan

Fungsi pengelogan

deprecate<T>(T, string, string)

Metode util.deprecate() membungkus fn (yang mungkin merupakan fungsi atau kelas) sedemikian sehingga ditandai sebagai tidak digunakan lagi.

import { deprecate } from 'node:util';

export const obsoleteFunction = deprecate(() => {
  // Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

Ketika dipanggil, util.deprecate() akan mengembalikan fungsi yang akan memancarkan DeprecationWarning menggunakan peristiwa 'warning'. Peringatan akan dipancarkan dan dicetak ke stderr pertama kali fungsi yang dikembalikan dipanggil. Setelah peringatan dipancarkan, fungsi yang dibungkus dipanggil tanpa memancarkan peringatan.

Jika code opsional yang sama disediakan dalam beberapa panggilan ke util.deprecate(), peringatan akan dipancarkan hanya sekali untuk codetersebut.

import { deprecate } from 'node:util';

const fn1 = deprecate(
  () => 'a value',
  'deprecation message',
  'DEP0001',
);
const fn2 = deprecate(
  () => 'a  different value',
  'other dep message',
  'DEP0001',
);
fn1(); // Emits a deprecation warning with code DEP0001
fn2(); // Does not emit a deprecation warning because it has the same code

Jika bendera baris perintah --no-deprecation atau --no-warnings digunakan, atau jika properti process.noDeprecation diatur ke true sebelumnya ke peringatan penghentian pertama, metode util.deprecate() tidak melakukan apa pun.

Jika bendera baris perintah --trace-deprecation atau --trace-warnings diatur, atau properti process.traceDeprecation diatur ke true, peringatan dan jejak tumpukan dicetak ke stderr pertama kali fungsi yang tidak digunakan lagi dipanggil.

Jika bendera baris perintah --throw-deprecation diatur, atau properti process.throwDeprecation diatur ke true, maka pengecualian akan dilemparkan ketika fungsi yang tidak digunakan lagi dipanggil.

Bendera baris perintah --throw-deprecation dan properti process.throwDeprecation lebih diutamakan daripada --trace-deprecation dan process.traceDeprecation.

function deprecate<T>(fn: T, msg: string, code?: string): T

Parameter

fn

T

Fungsi yang tidak digunakan lagi.

msg

string

Pesan peringatan untuk ditampilkan ketika fungsi yang tidak digunakan lagi dipanggil.

code

string

Kode penghentian. Lihat list of deprecated APIs untuk daftar kode.

Mengembalikan

T

Fungsi yang tidak digunakan lagi dibungkus untuk memancarkan peringatan.

diff(string | (readonly string[]), string | (readonly string[]))

util.diff() membandingkan dua nilai string atau array dan mengembalikan array entri perbedaan. Ini menggunakan algoritma Myers diff untuk menghitung perbedaan minimal, yang merupakan algoritma yang sama yang digunakan secara internal oleh pesan kesalahan pernyataan.

Jika nilainya sama, array kosong dikembalikan.

const { diff } = require('node:util');

// Comparing strings
const actualString = '12345678';
const expectedString = '12!!5!7!';
console.log(diff(actualString, expectedString));
// [
//   [0, '1'],
//   [0, '2'],
//   [1, '3'],
//   [1, '4'],
//   [-1, '!'],
//   [-1, '!'],
//   [0, '5'],
//   [1, '6'],
//   [-1, '!'],
//   [0, '7'],
//   [1, '8'],
//   [-1, '!'],
// ]
// Comparing arrays
const actualArray = ['1', '2', '3'];
const expectedArray = ['1', '3', '4'];
console.log(diff(actualArray, expectedArray));
// [
//   [0, '1'],
//   [1, '2'],
//   [0, '3'],
//   [-1, '4'],
// ]
// Equal values return empty array
console.log(diff('same', 'same'));
// []
function diff(actual: string | (readonly string[]), expected: string | (readonly string[])): DiffEntry[]

Parameter

actual

string | (readonly string[])

Nilai pertama yang akan dibandingkan

expected

string | (readonly string[])

Nilai kedua yang akan dibandingkan

Mengembalikan

Array entri perbedaan. Setiap entri adalah array dengan dua elemen:

  • Indeks 0: number Kode operasi: -1 untuk penghapusan, 0 untuk no-op/tidak berubah, 1 untuk penyisipan
  • Indeks 1: string Nilai yang terkait dengan operasi

find<T>((x: T) => boolean, T[])

Menemukan nilai pertama dalam array yang cocok dengan predikat yang ditentukan.

function find<T>(predicate: (x: T) => boolean, xs: T[]): T

Parameter

predicate

(x: T) => boolean

xs

T[]

Mengembalikan

T

findIndex<T>((x: T) => boolean, T[])

Menemukan indeks nilai pertama dalam array yang cocok dengan predikat yang ditentukan.

function findIndex<T>(predicate: (x: T) => boolean, xs: T[]): number

Parameter

predicate

(x: T) => boolean

xs

T[]

Mengembalikan

number

format(any, any[])

Metode util.format() mengembalikan string yang diformat menggunakan argumen pertama sebagai string format printf-like yang dapat berisi penentu format nol atau lebih. Setiap penentu diganti dengan nilai yang dikonversi dari argumen yang sesuai. Penentu yang didukung adalah:

Jika penentu tidak memiliki argumen yang sesuai, itu tidak diganti:

util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

Nilai yang bukan bagian dari string format diformat menggunakan util.inspect() jika jenisnya tidak string.

Jika ada lebih banyak argumen yang diteruskan ke metode util.format() daripada jumlah penentu, argumen tambahan digabungkan ke string yang dikembalikan, dipisahkan oleh spasi:

util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz'

Jika argumen pertama tidak berisi penentu format yang valid, util.format() mengembalikan string yang merupakan penggabungan semua argumen yang dipisahkan oleh spasi:

util.format(1, 2, 3);
// Returns: '1 2 3'

Jika hanya satu argumen yang diteruskan ke util.format(), argumen dikembalikan apa adanya tanpa pemformatan apa pun:

util.format('%% %s');
// Returns: '%% %s'

util.format() adalah metode sinkron yang dimaksudkan sebagai alat penelusuran kesalahan. Beberapa nilai input dapat memiliki overhead performa signifikan yang dapat memblokir perulangan peristiwa. Gunakan fungsi ini dengan hati-hati dan jangan pernah berada di jalur kode panas.

function format(format?: any, param: any[]): string

Parameter

format

any

String format printf-like.

param

any[]

Mengembalikan

string

formatWithOptions(InspectOptions, any, any[])

Fungsi ini identik dengan format , kecuali karena dibutuhkan argumen inspectOptions yang menentukan opsi yang diteruskan ke memeriksa.

util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
// Returns 'See object { foo: 42 }', where `42` is colored as a number
// when printed to a terminal.
function formatWithOptions(inspectOptions: InspectOptions, format?: any, param: any[]): string

Parameter

inspectOptions
InspectOptions
format

any

param

any[]

Mengembalikan

string

generateUUID()

Menghasilkan uuid 20 karakter.

function generateUUID(): string

Mengembalikan

string

getCallSites(GetCallSitesOptions)

function getCallSites(options: GetCallSitesOptions): CallSiteObject[]

Parameter

options

GetCallSitesOptions

Mengembalikan

getCallSites(number, GetCallSitesOptions)

Mengembalikan array objek situs panggilan yang berisi tumpukan fungsi pemanggil.

import { getCallSites } from 'node:util';

function exampleFunction() {
  const callSites = getCallSites();

  console.log('Call Sites:');
  callSites.forEach((callSite, index) => {
    console.log(`CallSite ${index + 1}:`);
    console.log(`Function Name: ${callSite.functionName}`);
    console.log(`Script Name: ${callSite.scriptName}`);
    console.log(`Line Number: ${callSite.lineNumber}`);
    console.log(`Column Number: ${callSite.column}`);
  });
  // CallSite 1:
  // Function Name: exampleFunction
  // Script Name: /home/example.js
  // Line Number: 5
  // Column Number: 26

  // CallSite 2:
  // Function Name: anotherFunction
  // Script Name: /home/example.js
  // Line Number: 22
  // Column Number: 3

  // ...
}

// A function to simulate another stack layer
function anotherFunction() {
  exampleFunction();
}

anotherFunction();

Dimungkinkan untuk membangun kembali lokasi asli dengan mengatur opsi sourceMap ke true. Jika peta sumber tidak tersedia, lokasi asli akan sama dengan lokasi saat ini. Ketika bendera --enable-source-maps diaktifkan, misalnya saat menggunakan --experimental-transform-types, sourceMap akan benar secara default.

import { getCallSites } from 'node:util';

interface Foo {
  foo: string;
}

const callSites = getCallSites({ sourceMap: true });

// With sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 7
// Column Number: 26

// Without sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 2
// Column Number: 26
function getCallSites(frameCount?: number, options?: GetCallSitesOptions): CallSiteObject[]

Parameter

frameCount

number

Jumlah bingkai yang akan diambil sebagai objek situs panggilan. Default:10. Rentang yang diizinkan adalah antara 1 dan 200.

options

GetCallSitesOptions

Mengembalikan

Array objek situs panggilan

getRandomValue()

Mengembalikan angka acak

function getRandomValue(): number

Mengembalikan

number

getSystemErrorMap()

Mengembalikan Peta semua kode kesalahan sistem yang tersedia dari API Node.js. Pemetaan antara kode kesalahan dan nama kesalahan bergantung pada platform. Lihat Common System Errors untuk nama kesalahan umum.

fs.access('file/that/does/not/exist', (err) => {
  const errorMap = util.getSystemErrorMap();
  const name = errorMap.get(err.errno);
  console.error(name);  // ENOENT
});
function getSystemErrorMap(): Map<number, [string, string]>

Mengembalikan

Map<number, [string, string]>

getSystemErrorMessage(number)

Mengembalikan pesan string untuk kode kesalahan numerik yang berasal dari API Node.js. Pemetaan antara kode kesalahan dan pesan string bergantung pada platform.

fs.access('file/that/does/not/exist', (err) => {
  const message = util.getSystemErrorMessage(err.errno);
  console.error(message);  // no such file or directory
});
function getSystemErrorMessage(err: number): string

Parameter

err

number

Mengembalikan

string

getSystemErrorName(number)

Mengembalikan nama string untuk kode kesalahan numerik yang berasal dari API Node.js. Pemetaan antara kode kesalahan dan nama kesalahan bergantung pada platform. Lihat Common System Errors untuk nama kesalahan umum.

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});
function getSystemErrorName(err: number): string

Parameter

err

number

Mengembalikan

string

getTimeDiffInMilliseconds(Date, Date)

Mengembalikan interval waktu antara dua tanggal dalam milidetik

function getTimeDiffInMilliseconds(start: Date, end: Date): number

Parameter

start

Date

end

Date

Mengembalikan

number

inherits(unknown, unknown)

Penggunaan util.inherits() tidak disarankan. Gunakan class ES6 dan kata kunci extends untuk mendapatkan dukungan pewarisan tingkat bahasa. Perhatikan juga bahwa kedua gaya tersebut yang tidak kompatibel secara semantik.

Mewarisi metode prototipe dari satu konstruktor ke dalam yang lain. Prototipe constructor akan diatur ke objek baru yang dibuat dari superConstructor.

Ini terutama menambahkan beberapa validasi input di atas Object.setPrototypeOf(constructor.prototype, superConstructor.prototype). Sebagai kenyamanan tambahan, superConstructor dapat diakses melalui properti constructor.super_.

const util = require('node:util');
const EventEmitter = require('node:events');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"

Contoh ES6 menggunakan class dan extends:

import EventEmitter from 'node:events';

class MyStream extends EventEmitter {
  write(data) {
    this.emit('data', data);
  }
}

const stream = new MyStream();

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('With ES6');
function inherits(constructor: unknown, superConstructor: unknown)

Parameter

constructor

unknown

superConstructor

unknown

inspect(any, boolean, null | number, boolean)

Metode util.inspect() mengembalikan representasi string object yang dimaksudkan untuk penelusuran kesalahan. Output util.inspect dapat berubah kapan saja dan tidak boleh diandalkan secara terprogram. options tambahan dapat diteruskan yang mengubah hasilnya. util.inspect() akan menggunakan nama dan/atau Symbol.toStringTag properti konstruktor untuk membuat tag yang dapat diidentifikasi untuk nilai yang diperiksa.

class Foo {
  get [Symbol.toStringTag]() {
    return 'bar';
  }
}

class Bar {}

const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });

util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz);       // '[foo] {}'

Referensi melingkar menunjuk ke jangkarnya dengan menggunakan indeks referensi:

import { inspect } from 'node:util';

const obj = {};
obj.a = [obj];
obj.b = {};
obj.b.inner = obj.b;
obj.b.obj = obj;

console.log(inspect(obj));
// <ref *1> {
//   a: [ [Circular *1] ],
//   b: <ref *2> { inner: [Circular *2], obj: [Circular *1] }
// }

Contoh berikut memeriksa semua properti objek util:

import util from 'node:util';

console.log(util.inspect(util, { showHidden: true, depth: null }));

Contoh berikut menyoroti efek opsi compact:

import { inspect } from 'node:util';

const o = {
  a: [1, 2, [[
    'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' +
      'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.',
    'test',
    'foo']], 4],
  b: new Map([['za', 1], ['zb', 'test']]),
};
console.log(inspect(o, { compact: true, depth: 5, breakLength: 80 }));

// { a:
//   [ 1,
//     2,
//     [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line
//           'test',
//           'foo' ] ],
//     4 ],
//   b: Map(2) { 'za' => 1, 'zb' => 'test' } }

// Setting `compact` to false or an integer creates more reader friendly output.
console.log(inspect(o, { compact: false, depth: 5, breakLength: 80 }));

// {
//   a: [
//     1,
//     2,
//     [
//       [
//         'Lorem ipsum dolor sit amet,\n' +
//           'consectetur adipiscing elit, sed do eiusmod \n' +
//           'tempor incididunt ut labore et dolore magna aliqua.',
//         'test',
//         'foo'
//       ]
//     ],
//     4
//   ],
//   b: Map(2) {
//     'za' => 1,
//     'zb' => 'test'
//   }
// }

// Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a
// single line.

Opsi showHidden memungkinkan entri WeakMap dan WeakSet diperiksa. Jika ada lebih banyak entri daripada maxArrayLength, tidak ada jaminan entri mana yang ditampilkan. Itu berarti mengambil entri WeakSet yang sama dua kali dapat mengakibatkan output yang berbeda. Selain itu, entri tanpa referensi yang kuat yang tersisa dapat menjadi sampah yang dikumpulkan kapan saja.

import { inspect } from 'node:util';

const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);

console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }

Opsi sorted memastikan bahwa urutan penyisipan properti objek tidak memengaruhi hasil util.inspect().

import { inspect } from 'node:util';
import assert from 'node:assert';

const o1 = {
  b: [2, 3, 1],
  a: '`a` comes before `b`',
  c: new Set([2, 3, 1]),
};
console.log(inspect(o1, { sorted: true }));
// { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } }
console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) }));
// { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' }

const o2 = {
  c: new Set([2, 1, 3]),
  a: '`a` comes before `b`',
  b: [2, 3, 1],
};
assert.strict.equal(
  inspect(o1, { sorted: true }),
  inspect(o2, { sorted: true }),
);

Opsi numericSeparator menambahkan garis bawah setiap tiga digit ke semua angka.

import { inspect } from 'node:util';

const thousand = 1000;
const million = 1000000;
const bigNumber = 123456789n;
const bigDecimal = 1234.12345;

console.log(inspect(thousand, { numericSeparator: true }));
// 1_000
console.log(inspect(million, { numericSeparator: true }));
// 1_000_000
console.log(inspect(bigNumber, { numericSeparator: true }));
// 123_456_789n
console.log(inspect(bigDecimal, { numericSeparator: true }));
// 1_234.123_45

util.inspect() adalah metode sinkron yang ditujukan untuk penelusuran kesalahan. Panjang output maksimumnya adalah sekitar 128 MiB. Input yang menghasilkan output yang lebih panjang akan dipotong.

function inspect(object: any, showHidden?: boolean, depth?: null | number, color?: boolean): string

Parameter

object

any

Setiap JavaScript primitif atau Object.

showHidden

boolean

depth

null | number

color

boolean

Mengembalikan

string

Representasi object.

inspect(any, InspectOptions)

function inspect(object: any, options?: InspectOptions): string

Parameter

object

any

options
InspectOptions

Mengembalikan

string

isArray(unknown)

Peringatan

API ini sudah tidak digunakan lagi.

Since v4.0.0 - Use isArray instead.

Alias untuk Array.isArray().

Mengembalikan true jika object yang diberikan adalah Array. Jika tidak, mengembalikan false.

import util from 'node:util';

util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false
function isArray(object: unknown): object

Parameter

object

unknown

Mengembalikan

object

isCreate(string)

Memeriksa apakah jenis semat adalah untuk membuat

function isCreate(embedType: string): boolean

Parameter

embedType

string

Mengembalikan

boolean

isDeepStrictEqual(unknown, unknown, IsDeepStrictEqualOptions)

Mengembalikan true jika ada kesetaraan ketat yang mendalam antara val1 dan val2. Jika tidak, mengembalikan false.

Lihat assert.deepStrictEqual() untuk informasi selengkapnya tentang kesetaraan ketat yang mendalam.

function isDeepStrictEqual(val1: unknown, val2: unknown, options?: IsDeepStrictEqualOptions): boolean

Parameter

val1

unknown

val2

unknown

Mengembalikan

boolean

isRDLEmbed(string)

Memeriksa apakah url semat adalah untuk laporan RDL.

function isRDLEmbed(embedUrl: string): boolean

Parameter

embedUrl

string

Mengembalikan

boolean

isSavedInternal(HttpPostMessage, string, Window)

Memeriksa apakah laporan disimpan.

function isSavedInternal(hpm: HttpPostMessage, uid: string, contentWindow: Window): Promise<boolean>

Parameter

hpm

HttpPostMessage

uid

string

contentWindow

Window

Mengembalikan

Promise<boolean>

parseArgs<T>(T)

Menyediakan API tingkat yang lebih tinggi untuk penguraian argumen baris perintah daripada berinteraksi dengan process.argv secara langsung. Mengambil spesifikasi untuk argumen yang diharapkan dan mengembalikan objek terstruktur dengan opsi dan posisi yang diurai.

import { parseArgs } from 'node:util';
const args = ['-f', '--bar', 'b'];
const options = {
  foo: {
    type: 'boolean',
    short: 'f',
  },
  bar: {
    type: 'string',
  },
};
const {
  values,
  positionals,
} = parseArgs({ args, options });
console.log(values, positionals);
// Prints: [Object: null prototype] { foo: true, bar: 'b' } []
function parseArgs<T>(config?: T): ParsedResults<T>

Parameter

config

T

Digunakan untuk menyediakan argumen untuk penguraian dan untuk mengonfigurasi pengurai. config mendukung properti berikut:

Mengembalikan

ParsedResults<T>

Argumen baris perintah yang diurai:

parseEnv(string)

Stabilitas: 1.1 - Pengembangan aktif Mengingat contoh file .env:

import { parseEnv } from 'node:util';

parseEnv('HELLO=world\nHELLO=oh my\n');
// Returns: { HELLO: 'oh my' }
function parseEnv(content: string): NodeJS.Dict<string>

Parameter

content

string

Konten mentah dari file .env.

Mengembalikan

NodeJS.Dict<string>

promisify((callback: (err?: any) => void) => void)

function promisify(fn: (callback: (err?: any) => void) => void): () => Promise<void>

Parameter

fn

(callback: (err?: any) => void) => void

Mengembalikan

() => Promise<void>

promisify(Function)

function promisify(fn: Function): Function

Parameter

fn

Function

Mengembalikan

Function

promisify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

promisify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

promisify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

promisify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

promisify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

promisify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<void>

Parameter

fn

(arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void

Mengembalikan

(arg1: T1, arg2: T2, arg3: T3) => Promise<void>

promisify<T1, T2, TResult>((arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise<TResult>

Parameter

fn

(arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void

Mengembalikan

(arg1: T1, arg2: T2) => Promise<TResult>

promisify<T1, T2>((arg1: T1, arg2: T2, callback: (err?: any) => void) => void)

function promisify<T1, T2>(fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2) => Promise<void>

Parameter

fn

(arg1: T1, arg2: T2, callback: (err?: any) => void) => void

Mengembalikan

(arg1: T1, arg2: T2) => Promise<void>

promisify<T1, TResult>((arg1: T1, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, TResult>(fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void): (arg1: T1) => Promise<TResult>

Parameter

fn

(arg1: T1, callback: (err: any, result: TResult) => void) => void

Mengembalikan

(arg1: T1) => Promise<TResult>

promisify<T1>((arg1: T1, callback: (err?: any) => void) => void)

function promisify<T1>(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise<void>

Parameter

fn

(arg1: T1, callback: (err?: any) => void) => void

Mengembalikan

(arg1: T1) => Promise<void>

promisify<TCustom>(CustomPromisify<TCustom>)

Mengambil fungsi mengikuti gaya panggilan balik kesalahan-pertama umum, yaitu mengambil panggilan balik (err, value) => ... sebagai argumen terakhir, dan mengembalikan versi yang mengembalikan janji.

import { promisify } from 'node:util';
import { stat } from 'node:fs';

const promisifiedStat = promisify(stat);
promisifiedStat('.').then((stats) => {
  // Do something with `stats`
}).catch((error) => {
  // Handle the error.
});

Atau, secara setara menggunakan async function:

import { promisify } from 'node:util';
import { stat } from 'node:fs';

const promisifiedStat = promisify(stat);

async function callStat() {
  const stats = await promisifiedStat('.');
  console.log(`This directory is owned by ${stats.uid}`);
}

callStat();

Jika ada properti yang original[util.promisify.custom] ada, promisify akan mengembalikan nilainya, lihat Fungsi kustom yang dipromisikan.

promisify() mengasumsikan bahwa original adalah fungsi yang mengambil panggilan balik sebagai argumen akhirnya dalam semua kasus. Jika original bukan fungsi, promisify() akan melemparkan kesalahan. Jika original adalah fungsi tetapi argumen terakhirnya bukan panggilan balik kesalahan-pertama, itu masih akan diteruskan panggilan balik kesalahan-pertama sebagai argumen terakhirnya.

Menggunakan promisify() pada metode kelas atau metode lain yang menggunakan this mungkin tidak berfungsi seperti yang diharapkan kecuali ditangani secara khusus:

import { promisify } from 'node:util';

class Foo {
  constructor() {
    this.a = 42;
  }

  bar(callback) {
    callback(null, this.a);
  }
}

const foo = new Foo();

const naiveBar = promisify(foo.bar);
// TypeError: Cannot read properties of undefined (reading 'a')
// naiveBar().then(a => console.log(a));

naiveBar.call(foo).then((a) => console.log(a)); // '42'

const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'
function promisify<TCustom>(fn: CustomPromisify<TCustom>): TCustom

Parameter

fn

CustomPromisify<TCustom>

Mengembalikan

TCustom

promisify<TResult>((callback: (err: any, result: TResult) => void) => void)

function promisify<TResult>(fn: (callback: (err: any, result: TResult) => void) => void): () => Promise<TResult>

Parameter

fn

(callback: (err: any, result: TResult) => void) => void

Mengembalikan

() => Promise<TResult>

raiseCustomEvent(HTMLElement, string, any)

Menaikkan peristiwa kustom dengan data peristiwa pada elemen HTML yang ditentukan.

function raiseCustomEvent(element: HTMLElement, eventName: string, eventData: any)

Parameter

element

HTMLElement

eventName

string

eventData

any

remove<T>((x: T) => boolean, T[])

function remove<T>(predicate: (x: T) => boolean, xs: T[])

Parameter

predicate

(x: T) => boolean

xs

T[]

setTraceSigInt(boolean)

Aktifkan atau nonaktifkan pencetakan jejak tumpukan pada SIGINT. API hanya tersedia di utas utama.

function setTraceSigInt(enable: boolean)

Parameter

enable

boolean

stripVTControlCharacters(string)

Mengembalikan str dengan kode escape ANSI yang dihapus.

console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m'));
// Prints "value"
function stripVTControlCharacters(str: string): string

Parameter

str

string

Mengembalikan

string

styleText(ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[], string, StyleTextOptions)

Fungsi ini mengembalikan teks yang diformat mengingat yang format diteruskan untuk pencetakan di terminal. Ini mengetahui kemampuan dan tindakan terminal sesuai dengan konfigurasi yang ditetapkan melalui NO_COLORvariabel lingkungan , NODE_DISABLE_COLORS dan FORCE_COLOR .

import { styleText } from 'node:util';
import { stderr } from 'node:process';

const successMessage = styleText('green', 'Success!');
console.log(successMessage);

const errorMessage = styleText(
  'red',
  'Error! Error!',
  // Validate if process.stderr has TTY
  { stream: stderr },
);
console.error(errorMessage);

util.inspect.colors juga menyediakan format teks seperti italic, dan underline dan Anda dapat menggabungkan keduanya:

console.log(
  util.styleText(['underline', 'italic'], 'My italic underlined message'),
);

Saat meneruskan array format, urutan format yang diterapkan dibiarkan ke kanan sehingga gaya berikut mungkin menimpa yang sebelumnya.

console.log(
  util.styleText(['red', 'green'], 'text'), // green
);

Nilai none format khusus tidak menerapkan gaya tambahan ke teks.

Daftar lengkap format dapat ditemukan di pengubah .

function styleText(format: ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[], text: string, options?: StyleTextOptions): string

Parameter

format

ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[]

Format teks atau Array format teks yang ditentukan dalam util.inspect.colors.

text

string

Teks yang akan diformat.

Mengembalikan

string

toUSVString(string)

Mengembalikan string setelah mengganti titik kode pengganti apa pun (atau setara, unit kode pengganti yang tidak berpasangan) dengan U+FFFD "karakter pengganti" Unicode.

function toUSVString(string: string): string

Parameter

string

string

Mengembalikan

string

transferableAbortController()

Membuat dan mengembalikan instans AbortController yang AbortSignal nya ditandai sebagai dapat ditransfer dan dapat digunakan dengan structuredClone() atau postMessage().

function transferableAbortController(): AbortController

Mengembalikan

AbortController

AbortController yang dapat ditransfer

transferableAbortSignal(AbortSignal)

Menandai AbortSignal yang diberikan sebagai dapat ditransfer sehingga dapat digunakan denganstructuredClone() dan postMessage().

const signal = transferableAbortSignal(AbortSignal.timeout(100));
const channel = new MessageChannel();
channel.port2.postMessage(signal, [signal]);
function transferableAbortSignal(signal: AbortSignal): AbortSignal

Parameter

signal

AbortSignal

The AbortSignal

Mengembalikan

AbortSignal

AbortSignal yang sama