TypeScriptのunknown型

1

3.0から入ったunknown型がある

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html

というかunknown型が入ったこともあってmajor versionが上がったという認識をしている

2

コードベース中にJSON.parseをanyで受けているところをunknownにしてみるか〜と思って試したがうまくいかなかった

function main(x: unknown): string {
    if (typeof x !== 'object') {
        throw new Error('x');
    }

    if (x === null) {
        throw new Error('x');        
    }
    // この時点でxが{}まで絞れる

    // (1) typeof x.y  typeof x["y"]

    // (2)
    // if ('y' in x) {
    //     x.y
    // }
}

結局 1, 2で詰んでしまう。

まだtypeのnarrowがうまく効かなくて、issueはある状態。

自分の期待しうるunknownにはまだ遠くてJSON.parseの返り値に使うのは、真面目に書こうとする限り厳しいなぁという気持ち。