有人可以解释一下{}
和any
之间的区别吗?
例如,将通用接口参数设置为Interface<{}>
或Interface<any>
之间的区别。
有什么想法吗?
答案 0 :(得分:1)
所以JavaScript中有类型。与number
,string
,object
和boolean
一样。 any
匹配任何这些类型。 {}
只匹配空object
。
function fn1(foo: any): void {}
function fn2(foo: {}): void {}
fn1(23); // OK
fn1('test'); // OK
fn1(undefined); // OK
fn2({}); // OK
fn2(23); // Not OK
fn2(null); // Not OK
答案 1 :(得分:0)
要更好地了解{}
是什么意思,请检查https://blog.mariusschulz.com/2017/02/24/typescript-2-2-the-object-type
{}
是一种顶部类型。这是什么意思 ?如果您将某些内容注释为{}
,则可以是以下任何一种类型:string | number | boolean | object | {[key:string]: any} | Object | any[]
const test1: {} = 'hello'
const test2: {} = 123
const test3: {} = false
const test4: {} = {foo:'bar'}
尽管不允许使用null | undefined
// Expect errors
const test6: {} = null
const test7: {} = undefined
any
完全可以进行类型检查,您可以使用Vanilla JS进行任何疯狂的操作。专业提示:请勿在家使用:)绝对在ts-lint中使用no-any
规则