typescript - 类型“字符串”不可分配给类型“A”
问题描述
我有以下无法编译的代码片段:
interface A {
a: string
}
export type SessionSsrProps<T> = Record<string, T> & {
signOutUrl: string
}
const x: SessionSsrProps<A> = {
x: {
a: "Hello"
},
signOutUrl: "Hello"
}
编译器抱怨:
Type 'string' is not assignable to type 'A'
我究竟做错了什么?
我也试过:
interface SessionSsrProps<T> {
[key:string]: T
signOutUrl: string
}
编译器抱怨:
Property 'signOutUrl' of type 'string' is not assignable to string index type 'T'.
解决方案
我不能自信地说你正在做的事情是否可能,但很可能不是。
您的两次尝试都失败了,因为您描述了一种不可能的类型:一条记录有零个或多个键,其值都是 type T
,并且还有一个键signOutUrl
的值是 type string
。这需要signOutUrl
同时满足两者string & T
,这是无法解决的,因为T
它不扩展string
。
您要表达的是具有零个或多个键的记录,其值都是 type T
,除了signOutUrl
具有 type 值的键string
。我相信(但不确定)这目前在 TypeScript 中无法表达。
推荐阅读
- scala - Scala trait 可以复制它的子类吗?
- google-analytics - 在 Jekyll 中基于 Google Analytics 显示页面浏览量
- python - Pandas .apply MemoryError 和 'TextFileReader' 对象没有属性 'apply'
- python - 在python中通过管道读取流数据
- linux - 使用 cmake 构建 paraview 后,vtk 文件打开获取(核心转储)
- c# - EEPlus excel 错误仅在 T.TEST 公式中
- oracle - 从 24 小时内的字符串到时间戳
- marklogic - 路径范围索引配置
- heroku - 这个 buildpack 错误是什么?
- powershell - 用于将 .reg 文件导入远程计算机挂起的 PowerShell 脚本