Typescript:无法向下转换为泛型;记录<;字符串,字符串>&引用;类型?

Typescript:无法向下转换为泛型;记录<;字符串,字符串>&引用;类型?,typescript,Typescript,为什么typescript不允许我强制执行以下操作: interface foo { foofoo: string feefee: string faafaa: 'red' | 'blue' } 进入记录?我如何做到这一点 我试过: 将红色|蓝色字符串文本更改为仅stringtype 已尝试将instanceOfFoo作为记录 尝试将其更改为类型而不是接口 …没有任何乐趣任何帮助欣赏TypeScript在这里表示错误,不是因为这两种类型不能相互分配,而是因为它们没有共同的属性,

为什么typescript不允许我强制执行以下操作:

interface foo {
  foofoo: string
  feefee: string
  faafaa: 'red' | 'blue'
}
进入
记录
?我如何做到这一点

我试过:

  • 将红色|蓝色字符串文本更改为仅
    string
    type
  • 已尝试将instanceOfFoo作为记录
  • 尝试将其更改为类型而不是接口

…没有任何乐趣任何帮助欣赏

TypeScript在这里表示错误,不是因为这两种类型不能相互分配,而是因为它们没有共同的属性,这几乎总是由错误造成的,关于错误的说明相当清楚,在不可分配的情况下该怎么办

将类型“foo”转换为类型“Record”可能是错误的,因为两种类型都没有充分重叠。如果这是有意的,首先将表达式转换为“未知”

我的

所以你需要做的是

declare const x: foo; // there exists a variable x of type foo.
const y = x as unknown as Record<string, string>; // cast to unknown, then to Record.
declare const x:foo;//存在类型为foo的变量x。
常数y=x与记录一样未知;//投到未知,然后记录。

TypeScript在这里发出错误信号,不是因为这两种类型不能相互分配,而是因为它们没有共同的属性,这几乎总是错误的,关于错误的说明非常清楚在不可分配的情况下该怎么办

将类型“foo”转换为类型“Record”可能是错误的,因为两种类型都没有充分重叠。如果这是有意的,首先将表达式转换为“未知”

我的

所以你需要做的是

declare const x: foo; // there exists a variable x of type foo.
const y = x as unknown as Record<string, string>; // cast to unknown, then to Record.
declare const x:foo;//存在类型为foo的变量x。
常数y=x与记录一样未知;//投到未知,然后记录。

如果有三个字符串,则需要一个有两个字符串的记录。这不是有效的接口声明,
=
仅用于类型别名。。。这和这个作业是一致的。很抱歉输入错误。。。我在类型和接口之间切换,尝试不同的东西。will correct questions@aWell it应该与类型别名一起工作:--发布您的实际代码和错误?如果有三个字符串,您需要一个包含两个字符串的记录。这不是有效的接口声明,
=
仅用于类型别名。。。这和这个作业是一致的。很抱歉输入错误。。。我在类型和接口之间切换,尝试不同的东西。will correct questions@aWell it应该使用类型别名:--发布您的实际代码和错误?这就是我的错误消息,您的解决方案成功了!非常感谢。我拒绝使用unknown,因为我已经习惯了linter抱怨“any”类型并混淆了这两种类型……或者你可以使用类型别名而不是接口。@AaronBeall项目的linter不让我使用,但谁知道呢。。。可能是因为我做了别的错事。我觉得你是100%对的!谢谢你的信息。这是我的错误信息,你的解决方案成功了!非常感谢。我拒绝使用unknown,因为我已经习惯了linter抱怨“any”类型并混淆了这两种类型……或者你可以使用类型别名而不是接口。@AaronBeall项目的linter不让我使用,但谁知道呢。。。可能是因为我做了别的错事。我觉得你是100%对的!谢谢你的信息。超级新的打字脚本。