[[TypeScript]]が推論した型を上書きするメカニズム。`as 型`という形式。 ```ts interface Human { name: string } const obj = {} as Human // ^? const obj: Human obj.name = "your-name" ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgBIFcC2cTIN4BQyxyIcmEAXMgM5hSgDmBAvkSQQgPYh3JcAjAFbIAvPhbI4NNFhwEA9ApLEAegH4CgoQDoyFMcgBEATy7ooAWn0QjBIA">Playground</a></button> ただし、変換不可能なものに[[型アサーション (TypeScript)|型アサーション]]は機能せずエラーになる。 ```ts interface Human { name: string } const ok1 = {name: "hoge"} as Human const ok2 = {name: "hoge", hoge: true} as Human const ok3 = {} as Human // 以下はエラー const err1 = {name: 1} as Human const err2 = {hoge: true} as Human const err3 = "hoge" as Human ``` <button class="playground"><a href="https://www.typescriptlang.org/play?ssl=12&ssc=29&pln=12&pc=1#code/JYOwLgpgTgZghgYwgAgBIFcC2cTIN4BQyxyIcmEAXMgM5hSgDmBAvkSQQgPYh3JcBrAIzIAvPjIVqAIgAWXRhGktkcGmiw5OPPoIBMYieSrI5CpQBpk8xdXroIKtRuwhtvMPwEBmQ3ifqGK4EBAD0ociAp3KA0HKA9gyAFQyAlwyAPwzufNBQIuJ4kiZCAS5a3B7IGQbZNib2jqqBmm7F6VBQvuJmitK1hSBAA">Playground</a></button> > [!question] > ok3は問題ないのに、err2がエラーになる理由がいまいち分からない...。必須のキー`name`がないからなら、`{}`もエラーな気が... 危険を覚悟でエラーにせず[[型アサーション (TypeScript)|型アサーション]]を通したいときは[[any型]]や[[unknown型]]を経由する。 ```ts interface Human { name: string } // 力技で通すこともできる const unsafeOk1 = {name: 1} as any as Human const unsafeOk2 = {name: 1} as unknown as Human ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgBIFcC2cTIN4BQyxyIcmEAXMgM5hSgDmBAvgQQPQfKDZSoAFGgcwZAWAmBNBkDKDIAsGQEEMAwLIMgaIYCCAPYg6ydGrgwIAeQDWARmQBefGQrVDLZHBq2QAT1v2M2EEtXrNNbXv0ATKbm5FTI1i4aIPogygDuuHZoWDhAA">Playground</a></button>