在 TypeScript 中, 如果有一个场景,不太好定义类型,但是你自己知道你在做什么,你自己知道它类型肯定是什么,这个时候可能就会忍不住使用 any
。如果你有类似的经历,你应该会理解我的意思,没有的话也没关系,我们来看一个具体的例子:
interface User {
name: string
}
function foo(user: User) {
console.log('hello, ' + user.name);
}
复制代码
上面的 foo
函数接受一个 User
类型的对象,并在运行的时候打印出它的 name
属性的值。
如果后端给予我们一个 JSON 字符串,在调用 foo
函数之前,我们要先反序列化一下:
// 假设这是后端给的数据
const userData = JSON.stringify({name: 'Jany'})
const user = JSON.parse(
userData
);
复制代码
接下来我们就可以正常调用了:
foo(user) // hello, Jany
复制代码
由于 JSON.parse
方法是 JS 中的一个方法,并不是强类型的,当我们查看 user
的类型的时候,会发现是 any
类型的: