TypeScriptでのYAMLのパースおよび文字列化方法の紹介

2025年3月17日月曜日

javascript TypeScript

t f B! P L

TypeScriptでYAML形式のデータを扱う際には、yamlライブラリが非常に有用です。このライブラリは、YAMLのパース(解析)や文字列化を簡単に行うことができます。

yamlライブラリのインストール

まず、yamlライブラリをプロジェクトに追加します。npmを使用して以下のコマンドを実行してください。

npm install yaml

または、yarnを使用している場合は以下のコマンドを実行します。

yarn add yaml

YAML形式の文字列からのパース

YAML形式の文字列をJavaScriptオブジェクトに変換するには、yamlライブラリのparse関数を使用します。

import { parse } from 'yaml';

const yamlString = `
name: John Doe
age: 30
email: john.doe@example.com
`;

const data = parse(yamlString);
console.log(data);

上記のコードを実行すると、以下のオブジェクトが出力されます。

{
  name: 'John Doe',
  age: 30,
  email: 'john.doe@example.com'
}

ファイルからのパース

YAMLファイルを読み込み、パースすることも可能です。Node.jsのfsモジュールと組み合わせて使用します。

import { parse } from 'yaml';
import { readFileSync } from 'fs';

const file = readFileSync('./data.yaml', 'utf8');
const data = parse(file);
console.log(data);

この方法で、data.yamlファイルの内容をオブジェクトとして取得できます。

パース後、クラスの型へ変換

パースしたデータを特定のクラスのインスタンスとして扱いたい場合、TypeScriptの型アサーションを使用してクラスの型に変換することができます。

import { parse } from 'yaml';
import { readFileSync } from 'fs';

class User {
  name: string;
  age: number;
  email: string;

  constructor(name: string, age: number, email: string) {
    this.name = name;
    this.age = age;
    this.email = email;
  }

  sayHello() {
    console.log(`Hello, my name is ${this.name}.`);
  }
}

const file = readFileSync('./user.yaml', 'utf8');
const data = parse(file) as User;

const user = new User(data.name, data.age, data.email);
user.sayHello();

このコードでは、user.yamlファイルから読み込んだデータをUserクラスのインスタンスとして扱っています。

文字列化

JavaScriptオブジェクトをYAML形式の文字列に変換するには、yamlライブラリのstringify関数を使用します。

import { stringify } from 'yaml';

const data = {
  name: 'John Doe',
  age: 30,
  email: 'john.doe@example.com'
};

const yamlString = stringify(data);
console.log(yamlString);

このコードを実行すると、以下のYAML形式の文字列が出力されます。

name: John Doe
age: 30
email: john.doe@example.com

以上、yamlライブラリを使用して、YAML形式の文字列からのパース、ファイルからのパース、パース後のクラスの型への変換、そして文字列化の方法をご紹介しました。このライブラリを活用することで、TypeScriptでのYAMLデータの操作が容易になります。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ