有没有办法更改*.d.tsintype中定义的接口属性的类型?
例如:接口in x.d.ts定义为
interface A {
property: number;
}
Run Code Online (Sandbox Code Playgroud)
我想在我写的typescript文件中更改它
interface A {
property: Object;
}
Run Code Online (Sandbox Code Playgroud)
甚至这会起作用
interface B extends A {
property: Object;
}
Run Code Online (Sandbox Code Playgroud)
这种方法会起作用吗?当我尝试使用我的系统时,它无法正常工作.只是想确认它是否可能?
在TypeScript中使用新的条件类型(或者可能是另一种技术),有没有办法根据修饰符从界面中选择某些属性?例如,有......
interface I1 {
readonly n: number
s: string
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个基于前一个类型的新类型,如下所示:
interface I2 {
s: string
}
Run Code Online (Sandbox Code Playgroud) 是否有可能有一个条件类型可以测试可以为空的对象?
例如:
function test<T>(a: T): T extends {} ? string : never {
return null
}
let o1: {}
let o2: { fox? }
let o3: { fox }
test(o1)
test(o2)
test(o3) // this one should be 'never'
Run Code Online (Sandbox Code Playgroud)
由于条件类型测试也适用于继承,因此所有 3 种情况都会产生“字符串”,但如果至少需要该类型的一个属性(例如非空对象类型o3) ,我想产生“从不”
更新
当我写这个问题时,我试图找出我遇到的问题的原因。我认为我应该解决我的疑问而不是我的问题,并简化我的问题。然而答案偏离了我的问题。
基本上我试图构建一个函数,其中第一个参数是一个对象,如果第一个参数可以完全部分(用 {} 初始化),则第二个参数是可选的
function test<T extends {}>(a: T, ...x: T extends {} ? [never?] : [any])
function test(a, b) {
return null
}
let o1: {}
let o2: { fox? }
let o3: { …Run Code Online (Sandbox Code Playgroud)