# Typeof 类型操作符

简单实例

let s = "hello";
let n: typeof s;

# ReturnType<T>

type Predicate = (x: unknown) => boolean;
type K = ReturnType<Predicate>;

K 的类型是 boolean

注意 ReturnType 接受的是类型

function f() {
  return { x: 10, y: 3 };
}
type P = ReturnType<f>;

所以,这里不会得到预期的效果

function f() {
  return { x: 10, y: 3 };
}
type P = ReturnType<typeof f>;
// type p = {x:number, y: number}

要使用 typeof 才能获取 f 的类型

注意,下面的写法,

type AAA = {
  name: string;
  age: number;
};

const a: AAA = {
  name: "ladeng",
  age: 18,
};

type bbb = typeof a;

// 这里又提现了 type 和 interface 的区别, 如果 AAA 是 interface 的话, 会返回 type bbb = AAA
type bbb = {
  name: string;
  age: number;
};