(ネタ) TypeScript 型パズルで作るmini interpreter

TypeScript 4.1に Template String Typesという機能を追加するPRが上がっていて、新しいおもちゃを与えられた犬となって色々遊んでしまった。

Template String Types is 何

Template String Typesで何ができるか的な話については、まぁhttps://github.com/microsoft/TypeScript/pull/40336 を見るなりしてもらえばいいんだけど、端的にいうとJSのTemplate stringよろしくLiteral TypeをTemplateで合成した結果を型として扱えるようになる機能。

type GetterName<T extends string> = `get${capitalize T}`;
type T10 = GetterName<'foo'>; // 'getFoo;

ミニ電卓作り

遊びで、「非負整数の和算・積算を行う」というのを型演算でやってみた。こんな感じ。

  • 構文木の構築
  • 評価
type N0 = null;
type N1 = { s: null };
type N2 = { s: { s: null } };

Front-end web developer. TypeScript, Angular and Vim, weapon of choice.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store