Можно ли расширить определение?
Например, допустим, мы хотим иметь определение подключения, подобное этому
Connection :: {
protocol: "tcp" | "udp"
port: int
host: string
}
И мы также хотим иметь SecureConnection
, который имеет все, что есть у Connection
, но мы также хотели бы добавить имя пользователя и пароль. Как этого добиться?
Я могу сделать это так
Connection :: {
protocol: "tcp" | "udp"
port: int
host: string
...
}
SecureConnection :: Connection & {
username: string & >""
password: string & >""
}
, и это будет работать, но это также означает, что это не закрыто. Из-за этих трех точек в определении Connection
мы можем добавить все, что захотим для безопасного соединения
, например
tcp: SecureConnection & {
protocol: "tcp"
port: 8080
host: "localhost"
username: "guest"
password: "guest"
test: "testing"
oneUnimportantVariable: "I am not important"
}
, когда я запускаю cue export myfile.cue
, это даст мне следующее JSON
{
"tcp": {
"protocol": "tcp",
"port": 8080,
"host": "localhost",
"username": "guest",
"password": "guest",
"test": "testing",
"oneUnimportantVariable": "I am not important"
}
}
Итак, как расширить определение Connection
и создать определение SecureConnection
и не иметь возможности указать переменную, которая не указана в этом определении?