两个不同的TypeScript接口是否需要具有相同的键,但能够具有不同的值?

两个不同的TypeScript接口是否需要具有相同的键,但能够具有不同的值?,typescript,typescript2.0,Typescript,Typescript2.0,我希望能够强制执行objValidator具有与其验证的obj相同的密钥。这在TypeScript中可能吗?关于如何实现下面这样的内容,有什么想法吗?主要是obj和objValidator必须具有相同的键,但键值不同 如果我的objValidator没有与obj完全相同的密钥,我希望能够得到警告 interface obj { alpha: number beta: string } interface objValidator { alpha: { message: st

我希望能够强制执行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
  }
}
类似这样的使用可能:

接口对象{
阿尔法:数字
贝塔:字符串
}
类型验证程序={
[P in keyof T]:{message:string,valid:boolean};
};
设o:Obj={alpha:1,beta:123};
let v:验证器=
{
阿尔法:{
信息:“ok”,
有效:正确
},
测试版:{
信息:“不正常”,
有效:假
}
}

通过将
valid:boolean
更改为
valid:(t:t[P])=>boolean
您也可以拥有检查密钥的自定义行为@joey farina
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
  }
}