首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与keyof混淆

与keyof混淆
EN

Stack Overflow用户
提问于 2018-03-07 01:23:27
回答 1查看 50关注 0票数 0

为什么这段代码没有抛出任何错误:

代码语言:javascript
复制
interface X {
    a: string;
    b?: string;
}

type Y<T> = {
  [key in keyof T]: boolean;
}

class A<Definition> {
    constructor(public readonly definition: Definition, public readonly fields: Y<Definition>) {

    }
}

const y = {
    a: true,
    c: false
}


const a = new A<X>({a: 'first', b: 'second'}, y)

但是这会抛出一个错误吗?

代码语言:javascript
复制
interface X {
    a: string;
    b?: string;
}

type Y<T> = {
  [key in keyof T]: boolean;
}

const y: Y<X> = {
  a: true,
  c: false,
}

我希望有类似于第一个例子的东西抛出一个错误,因为c不是X的键。

如果我在第一个例子中将类型Y<X>添加到y,我会得到一个编译器错误。

EN

回答 1

Stack Overflow用户

发布于 2018-03-07 01:53:15

您可以尝试使用联合类型来使您的第二个示例代码工作:

代码语言:javascript
复制
interface X {
    a: string;
    b?: string;
}

type Y<T> = {
  [key in keyof T]: boolean;
}

type Z = {
    c: boolean;
}

const y: Y<X> | Z = {
    a: true,
    c: false
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49136628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档