区分普通对象和类类型

时间:2018-12-17 16:43:48

标签: typescript

如何区分普通对象类型和类类型?

class Foo {
  constructor(public a: number) {}
}

declare let obj: {a: number}
declare let inst: Foo

// Either one would be fine.
type IsPlainObject<T> = ???
type IsClassType<T> = ???

如果要在普通对象上使用“映射类型”,而在类类型上则不要使用。

编辑:在许多(大多数?全部?)情况下,类类型似乎与接口相同:

class Foo { a?: number }
class Bar { a?: number }

type A = Foo extends Bar ? 1 : 0  // => 1
type B = Bar extends Foo ? 1 : 0  // => 1

type Obj = { a?: number }

type C = Foo extends Obj ? 1 : 0  // => 1
type D = Obj extends Foo ? 1 : 0  // => 1

Playground link

相关问题

0 个答案:

没有答案