moving soon →kajiri.dev

denoにPR出そうとして苦戦した

December 31, 2020

commit history
  1. 2020/11/29 23:49:12 a9a9485
headline

きっかけ

🔍 note.com

deno_lintにコントリビュートしている人がいて、やってみるかという気持ちがわいてきた

対象の関数

buildMessage

🔍 github.com

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

🔍 github.com

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を持っているか調べていた。 🔍 mozilla.org

new Map([[‘a’, 1]]) とかをisKeyedCollectionの引数に渡してやるとtrueがかえって来る

🔍 試した

しかし、typescriptの表現が色々でてきた。

  • unknown
  • is
  • as

これらについては調べて理解したのでいつかまとめたい

エラー出た

記事を書きながら余裕な感じでGithub Actionsのciが終わるのを待ってたら落ちた。どうなるこれ 。。ってかきながら、来週かなと思ってたら速攻で返事きてた。 なるほど、最新じゃないと。。クローンしたの6時間くらい前だから、バージョンアップしたか? てことでクローン元からpullしてみたら、、、へんこうありました。ありがとう 🔍 @bartlomieju 🔍 Deno Landのメンバーでした。返答早すぎる ci通るかなー… とおったー。prだした。今日はおしまい

pr

🔍 github.com


contact
Buy Me A Coffee
Thank you for visiting. You can now buy me a coffee!