ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   определенные аргументы от первого параметра (https://forum.antichat.xyz/showthread.php?t=1519199)

sizeoftrickster 25.08.2024 16:47

Подскажите пожалуйста, как мне сделать, чтобы аргумент k имел определенные поля интерфейса в зависимости от того, какой первый аргумент

Фактически он выводит значение, но на 15 строчке выходит ошибочка

Если использовать "// @ts-ignore", то все хорошо, но мне кажется, что где-то я ошибся

JavaScript:





Код:

interface
MyInterface
{
CAT
:
{
CAT
:
string
;
}
;
KITTY
:
{
KITTY
:
string
;
}
;
}
;
// interface MyInterface
function
Call

(
t
:
T
,
k
:
K
)
{
console
.
log
(
t
)
;
// -> CAT
console
.
log
(
k
)
;
// -> { CAT: '123' }
if
(
t
==
"CAT"
)
{
console
.
log
(
k
.
CAT
)
;
// Property 'CAT' does not exist on type '{ CAT: string; } | { KITTY: string; }'.
// Property 'CAT' does not exist on type '{ KITTY: string; }'
// Аналогичная ошибка и с k?.CAT и k["CAT"]
}
}
Call
(
"CAT"
,
{
CAT
:
"123"
}
)
;



playground

Также можно использовать as, а тогда зачем k: K?

JavaScript:





Код:

if
(
t
==
"CAT"
)
{
let
some
=
k
as
MyInterface
[
"CAT"
]
;
console
.
log
(
some
.
CAT
)
;
// success
}



playground


Время: 10:41