Generics
type guard: unknownを安全に絞り込む
unknownは型ガード後にだけ具体的な操作へ渡せます。
SourcestringValues.ts
Node.js 22
export const upperCaseIfString = (value: unknown) =>
typeof value === 'string' ? value.toUpperCase() : undefined;TeststringValues.test.ts
Node.js 22
import assert from 'node:assert/strict'; import test from 'node:test'; import { upperCaseIfString } from '../../src/typeguard/stringValues.js';
test('unknownはtypeof型ガードの後だけstringとして使える', () => { assert.equal(upperCaseIfString('ts'), 'TS'); assert.equal(upperCaseIfString(1), undefined); });01Assertion
このテストで確認できること
- stringは大文字化できる
- numberはundefinedになる
外部入力はunknownで受け、型ガードで狭めます。
OBSERVED RESULT
string → TS
number → undefined