Digite o script de como digitar o resto dos parâmetros no objeto
Nov 26 2020
function test(data){
console.log(data)
}
test({comments: 'hi', eat: true, sleep: true})
Na função de teste, tenho certeza de que o argumento de comentário aparecerá, onde, como para outros argumentos, as propriedades podem ser dinâmicas, mas o valor será do tipo booleano,
test({comments: 'hi', drink: true, sleep: true})
considerando essa situação, como devo digitar os dados corretamente? Eu tentei algo assim, mas parece errado
function(data: {data: {comments: string, [key: string]: boolean})
Respostas
1 НиколайГольцев Nov 26 2020 at 17:55
Posso sugerir algum tipo de solução alternativa:
function test<T extends {
[key: string]: any;
}>(data: { comments: unknown } & { [key in keyof T]: key extends "comments" ? string : boolean }) {
const comments = data.comments as string;
console.log(comments);
console.log(data.eat);
console.log(data.sleep);
}
test({comments: "hi"}); // works
test({comments: "hi", eat: true}); // works
test({comments: true}); // doesn't works
test({comments: 5}); // doesn't works
test({comments: "hi", eat: "true"}); // doesn't works
test({comments: "hi", eat: 5}); // doesn't works
Ele digitou bem fora do corpo da função, mas no corpo da função, para digitar data.comments
corretamente, você deve adicionar algum estreitamento.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?