useUnknownInCatchVariables
リリースされたバージョン: 4.4
JavaScript はいかなる値も例外として投げることができます。そのため補足した値は any
型でした。
typescript
// case 1try {throw new Error();} catch (err) {// err is any}// case 2try {throw "This is an error!";} catch (err) {// err is any}// case 3try {throw undefined;} catch (err) {// err is any}
typescript
// case 1try {throw new Error();} catch (err) {// err is any}// case 2try {throw "This is an error!";} catch (err) {// err is any}// case 3try {throw undefined;} catch (err) {// err is any}
この混沌は TypeScript4.0 でようやく整理されることとなりました。補足した値に対して unknown
型を明記することによって補足した値の型はわからないものの型安全を獲得できるようになりました。
typescript
// case 1try {throw new Error();} catch (err) {// err is any}// case 2try {throw "This is an error!";} catch (err: unknown) {// err is unknown}// case 3try {throw undefined;} catch (err: unknown) {// err is any}
typescript
// case 1try {throw new Error();} catch (err) {// err is any}// case 2try {throw "This is an error!";} catch (err: unknown) {// err is unknown}// case 3try {throw undefined;} catch (err: unknown) {// err is any}
今回のオプションはこの機能を常時有効にするものです。例外が補足した値は型の明記をすることなくすべてが unknown
型として解釈されるようになります。
typescript
// case 1try {throw new Error();} catch (err) {// err is unknown}// case 2try {throw "This is an error!";} catch (err) {// err is unknown}// case 3try {throw undefined;} catch (err) {// err is unknown}
typescript
// case 1try {throw new Error();} catch (err) {// err is unknown}// case 2try {throw "This is an error!";} catch (err) {// err is unknown}// case 3try {throw undefined;} catch (err) {// err is unknown}
また、この制限を緩くしたい。つまり unknown
型ではなく any
型にしたいのであれば補足した値に対し any
型を明記してください。