commit history
- 2020/11/29 23:49:12 a9a9485
headline
きっかけ
https://note.com/maguro_tuna/n/n5e5b56479abe
deno_lintにコントリビュートしている人がいて、やってみるかという気持ちがわいてきた
対象の関数
buildMessage
function buildMessage(diffResult: ReadonlyArray<DiffResult<string>>): string[] {
const messages: string[] = [];
messages.push("");
messages.push("");
messages.push(
` ${gray(bold("[Diff]"))} ${red(bold("Actual"))} / ${
green(bold("Expected"))
}`,
);
messages.push("");
messages.push("");
diffResult.forEach((result: DiffResult<string>): void => {
const c = createColor(result.type);
messages.push(c(`${createSign(result.type)}${result.value}`));
});
messages.push("");
return messages;
}
まず、buildMessageだが、Denoのテストを実行して失敗した時に表示するメッセージをきれいに整えて出力するものだった。(ActualとExpectedのDiffを赤と緑の太文字で表示する) それ自体はすぐわかったのだが、コメントにどう書けばいいか迷ってDeepLにたよりつつなんとかできた。
isKeyedCollection
function isKeyedCollection(x: unknown): x is Set<unknown> {
return [Symbol.iterator, "size"].every((k) => k in (x as Set<unknown>));
}
こっちは関数名がそのまんま示してくれていたからコメントとしてはすぐきまった。
やっていることとしてはSet<unknown>
でxをSetオブジェクト型だとアサーションして、それがSymbol.itelator(オブジェクトのデフォルトのイテレーター)とsizeを持っているか調べていた。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Keyed_collections
new Map([[‘a’, 1]]) とかをisKeyedCollectionの引数に渡してやるとtrueがかえって来る
しかし、typescriptの表現が色々でてきた。
- unknown
- is
- as
これらについては調べて理解したのでいつかまとめたい
エラー出た
記事を書きながら余裕な感じでGithub Actionsのciが終わるのを待ってたら落ちた。どうなるこれ 。。ってかきながら、来週かなと思ってたら速攻で返事きてた。 なるほど、最新じゃないと。。クローンしたの6時間くらい前だから、バージョンアップしたか? てことでクローン元からpullしてみたら、、、へんこうありました。ありがとう @bartlomieju Deno Landのメンバーでした。返答早すぎる ci通るかなー… とおったー。prだした。今日はおしまい