コベリンの最近の取り組みとして、業務などで役立ちそうな知見を共有する会を開催することになりました。 そのついでに発表に使ったアジェンダもそのまま公開してしまおうという豪快な企画です。
※ アジェンダをそのままコピペして公開したものなので若干見にくい箇所もあるかもしれませんが、ご了承ください。
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のパスワードは違うのにするようにと書いてあったので別のパスワードを設定しました。
するとこんなダイアログが出てきました。
ただkeyは作成されており、ググってみるとこのエラー出るけど大丈夫みたいな記事も出てきます。実際Googleのドキュメントもパスワード違うの指定しろって言ってる大丈夫だろうと思いこれで署名すると
エラーになりました。
んでさらに調べてみると同じにすると動くよとstackoverflowに出ていて試しにやってみたらうまくいきました。ちゃんちゃん
公式のドキュメントどうなってんねん!