可以使用两个不同的TypeScript接口来使用相同的键,但是能够使用不同的值吗?

时间:2017-01-10 14:56:05

标签: typescript typescript2.0

我希望能够强制执行objValidator与它验证的obj具有相同的密钥。这在TypeScript中是否可行?关于如何实现以下内容的任何想法?主要是obj和objValidator必须具有相同的键,但键值不同。

如果我的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
  }
}

1 个答案:

答案 0 :(得分:2)

使用mapped types这样的事情可能:

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
  }
}