第7回コベチケの会

コベリンの最近の取り組みとして、業務などで役立ちそうな知見を共有する会を開催することになりました。 そのついでに発表に使ったアジェンダもそのまま公開してしまおうという豪快な企画です。

※ アジェンダをそのままコピペして公開したものなので若干見にくい箇所もあるかもしれませんが、ご了承ください。

TypeScript の特殊な型の紹介 @mironal

超基本的な一部だけ.

  • never
  • any
  • unknown

never

値を返さない型. (void は void を返すが never は何も返さない違いがある) (日本語ムズイ)

https://www.typescriptlang.org/docs/handbook/2/functions.html#never

// Error を throw しちゃうから値をリターンはしない
function error(message: string): never {
  throw new Error(message);
}

// 永遠に終わらんから値をリターンしない
function infiniteLoop(): never {
  while (true) {}
}

// never は Mapped Types で方の除去に使える 

// 組み込みの Exclude と名前がかぶるので My をつけた
type MyExclude<T, U> = T extends U ? never : T

type StringOrNumber = string | number
// number を除去する
type OnlyString = MyExclude<StringOrNumber, number>

any と unknown

any はガバガバな型、 unknown は安全な any.

基本的には any は使わず unknown を使えば安全なコードが書ける.

https://www.typescriptlang.org/docs/handbook/2/functions.html#unknown

function f1(a: any) {
  a.toLowerCase(); // any はガバガバなので呼び出せてしまう. toLowerCase が存在しない場合は実行時エラーになる.
}
function f2(a: unknown) {
    // エラーになってコンパイルできない
  // Error: Object is of type 'unknown'.(2571)
  a.toLowerCase();
}

function f2_(a: unknown) {
    // 型チェックすればエラーにならない
    // 例えば a が string だったら呼び出せるね
    if (typeof a === "string") {
        a.toLowerCase();
    } 
}

Androidのアップロード鍵とキーストアを生成する時にはまったこと @takkumattsu

実はAndroidのリリースをしたことがなくて初めて署名まわりのことをやりました。 その際にはまったことを書いていきます。

まとめ

アップロード鍵とキーストアのパスワードは同じものにする

詳細

手順はドキュメントがあるのでここを見ながらやったのですが developer.android.com

作成する際にキーストアのパスワードとKeyのパスワードは違うのにするようにと書いてあったので別のパスワードを設定しました。

image.png (277.2 kB)

するとこんなダイアログが出てきました。

image.png (79.6 kB)

image.png (74.3 kB)

ただkeyは作成されており、ググってみるとこのエラー出るけど大丈夫みたいな記事も出てきます。実際Googleのドキュメントもパスワード違うの指定しろって言ってる大丈夫だろうと思いこれで署名すると


エラーになりました。

image.png (57.1 kB)

stackoverflow.com

んでさらに調べてみると同じにすると動くよとstackoverflowに出ていて試しにやってみたらうまくいきました。ちゃんちゃん

image.png (129.4 kB)

公式のドキュメントどうなってんねん!