TypeScript:
Pisanie pliku tekstowego
Jak to zrobić:
Sam TypeScript nie obsługuje bezpośrednio operacji na plikach, ponieważ kompiluje się do JavaScript, który tradycyjnie jest uruchamiany w przeglądarce z ograniczonym dostępem do systemu plików. Jednakże, gdy używany jest w środowisku Node.js, moduł fs
(File System) zapewnia funkcjonalność zapisywania plików.
Korzystanie z modułu fs Node.js
Najpierw upewnij się, że pracujesz w środowisku Node.js. Następnie użyj modułu fs
do zapisywania plików tekstowych. Oto podstawowy przykład:
import * as fs from 'fs';
const data = 'Hello, world!';
const filePath = './message.txt';
fs.writeFile(filePath, data, 'utf8', (err) => {
if (err) throw err;
console.log('Plik został zapisany!');
});
To asynchronicznie zapisze “Hello, world!” do message.txt
. Jeśli plik nie istnieje, Node.js go tworzy; jeśli istnieje, Node.js go nadpisuje.
Do synchronicznego zapisywania plików użyj writeFileSync
:
import * as fs from 'fs';
const data = 'Hello again, world!';
const filePath = './message.txt';
try {
fs.writeFileSync(filePath, data, 'utf8');
console.log('Plik został zapisany!');
} catch (err) {
console.error(err);
}
Korzystanie z popularnych bibliotek firm trzecich
Chociaż natywny moduł fs
jest potężny, niektórzy programiści wolą korzystać z bibliotek firm trzecich dla dodatkowej wygody i funkcjonalności. fs-extra
jest popularnym wyborem, który rozszerza fs
i upraszcza operacje na plikach.
Najpierw musisz zainstalować fs-extra
:
npm install fs-extra
Następnie możesz go użyć w swoim pliku TypeScript do zapisywania treści tekstowej:
import * as fs from 'fs-extra';
const data = 'To jest fs-extra!';
const filePath = './extraMessage.txt';
// Korzystając z async/await
async function writeFile() {
try {
await fs.writeFile(filePath, data, 'utf8');
console.log('Plik został zapisany za pomocą fs-extra!');
} catch (err) {
console.error(err);
}
}
writeFile();
Ten fragment kodu robi to samo co wcześniejsze przykłady z fs
, ale wykorzystuje bibliotekę fs-extra
, oferując czystrzą składnię do obsługi obietnic.