#typescript
#typescript
Вопрос:
Есть ли способ сделать это?
type X = {
p1: string
p2: number
}
type Y = {
p1: string
p2: number
p3: boolean
}
const app = (x: X)=> {
const fn = (x: X) => {
((x as unknown) as Y).p3 = true // any other way to do it?
}
fn(x)
x // vscode should show it as Y type, not X
}
const req: X = {p1: '', p2: 1}
app(req)
Я спрашиваю, потому что у меня есть объект запроса в приложении, который в witch я добавляю некоторые новые свойства, но получение правильных типов кажется непростым.
Ответ №1:
Если вы просто хотите описать какой-либо тип с 2 статическими реквизитами с неизвестными другими динамическими реквизитами, добавьте индексатор:
type X = {
p1: string
p2: number
[key: string]: string | number | boolean;
}
...
const app = (x: X)=> {
const fn = (x: X) => {
x.p3 = true
}
fn(x)
x // x cannot be turned into y by some magic actions
}