- Learn React with TypeScript 3
- Carl Rippon
- 352字
- 2021-06-10 19:16:43
The unknown type
unknown is a new type that has been added in TypeScript 3. Before TypeScript 3, we may have used the any type when we weren't sure of all the properties and methods in an object from a third-party library. However, when we declare a variable with the any type, the TypeScript compiler won't do any type checking on it. The unknown type can be used in these situations to make our code more type-safe. This is because unknown types are type-checked. So, unknown can often be used as an alternative to any.
In the TypeScript playground, let's go through an example of a function using any and an improved version using unknown:
- First, let's create a logScores function that takes in a parameter of type any. It logs out the name and scores properties from the argument to the console:
function logScores(scores: any) {
console.log(scores.firstName);
console.log(scores.scores);
}
- Let's call this function with the following:
logScores({
name: "Billy",
scores: [60, 70, 75]
});
If we run the program, we get undefined followed by [60, 70, 75] in the console. We passed in a correct object parameter, but our function logs firstName instead of name to the console. The program compiled just fine and didn't produce an error at runtime, but didn't give the result we wanted. This is all because we told the compiler not to check any types with the any type.
- Let's start to create a better version of this function with the unknown type:
function logScoresBetter(scores: unknown) {
console.log(scores.firstName);
console.log(scores.scores);
}
We immediately get compiler warnings where we reference the properties in scores:
So, the compiler is checking our scores variable now, which is great, and is even warning us about the firstName property. However, the scores property is also giving a complication error but is valid. So, how do we tell the compiler this? We need to explicitly do some type checking ourselves in our code. We'll cover a couple of ways of doing this in the following sections.
- LabVIEW Graphical Programming Cookbook
- 云計算通俗講義(第3版)
- Effective Python Penetration Testing
- Android開發案例教程與項目實戰(在線實驗+在線自測)
- 微信小程序全棧開發技術與實戰(微課版)
- 21天學通C++(第5版)
- Android開發三劍客:UML、模式與測試
- 編寫高質量代碼:改善Objective-C程序的61個建議
- OpenCV 3計算機視覺:Python語言實現(原書第2版)
- Python Programming for Arduino
- Deep Learning for Natural Language Processing
- Android智能手機APP界面設計實戰教程
- Java EE項目應用開發
- PHP 7 Programming Blueprints
- AI輔助編程Python實戰:基于GitHub Copilot和ChatGPT