Dada a seguinte assinatura:
export interface INotificationService {
error(message: string, title?: string, autoHideAfter?: number);
}
Como posso chamar a função error()
não especificando o title
parâmetro, mas configurando autoHideAfter
para dizer 1000
?
typescript
g.pickardou
fonte
fonte
?
é adicionado na definição da função , mas a questão é realmente chamar a função.undefined
para obter o mesmo comportamento que deixar de fora o argumento completamente. Apenas "qualquer coisa que não seja verdade " não funcionará, porque o TypeScript realmente se compara aovoid 0
que é uma maneira mais segura de escreverundefined
. )Infelizmente, não há nada parecido com isso no TypeScript (mais detalhes aqui: https://github.com/Microsoft/TypeScript/issues/467 )
Mas, para contornar isso, você pode alterar seus parâmetros para ser uma interface:
fonte
você pode usar variável opcional por
?
ou se você tiver várias variáveis opcionais por...
, exemplo:No exemplo acima:
name
É necessáriocountry
é obrigatório e tem um valor padrãoaddress
é opcionalhobbies
é uma matriz de parâmetros opcionaisfonte
Outra abordagem é:
Então, quando você quiser omitir o parâmetro title, basta enviar os dados assim:
Eu prefiro essas opções porque me permite adicionar mais parâmetros sem precisar enviar os outros.
fonte
title
?Isso é quase o mesmo que a resposta de @Brocco, mas com uma ligeira torção: apenas passe parâmetros opcionais em um objeto. (E também torne opcional o objeto params).
Ele acaba sendo como os ** kwargs de Python, mas não exatamente.
fonte
Você pode especificar várias assinaturas de método na interface e ter várias sobrecargas de método no método de classe:
Agora tudo isso funcionará:
... e o
error
método deINotificationService
terá as seguintes opções:Parque infantil
fonte
Você pode criar um método auxiliar que aceite uma base de parâmetro de um objeto nos argumentos de erro
fonte
Você pode tentar definir o título como nulo.
Isso funcionou para mim.
fonte
Você pode fazer isso sem uma interface.
use o
?
operador como um parâmetro opcional.fonte
message
eautoHideAfter