是否可以要求两个不同的 TypeScript 接口具有相同的键但可以具有不同的值?

Joe*_*ina 5 typescript typescript2.0

我希望能够强制 objValidator 与它验证的 obj 具有相同的键。这在 TypeScript 中可能吗?关于如何实现下面这样的东西的任何想法?主要是obj和objValidator必须有相同的key,但是key的值不同。

如果我的 objValidator 没有与 obj 完全相同的键,我希望能够收到警告。

interface obj {
  alpha: number
  beta: string
}

interface objValidator {
  alpha: {
    message: string
    valid(ALPHA'S TYPE): boolean
  }
  beta: {
    message: string
    valid(BETA'S TYPE): boolean
  }
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*mid 6

使用映射类型可能是这样的:

interface Obj {
  alpha: number
  beta: string
}

type Validator<T> = {
    [P in keyof T]: {message: string, valid: boolean};
};

let o: Obj = { alpha: 1, beta: "123" };
let v: Validator<Obj> =
{
  alpha: {
    message: "ok",
    valid: true
  },
  beta: {
    message: "not ok",
    valid: false
  }
}
Run Code Online (Sandbox Code Playgroud)