Esta questão é sobre semântica
Se eu fornecer esses dados: 12
qual é o seu tipo? Você não tem como saber com certeza. Pode ser um número inteiro - pode ser um ponto flutuante - pode ser uma sequência. Nesse sentido, são muitos dados "não digitados".
Se eu fornecer uma linguagem imaginária que permita usar operadores como "adicionar", "subtrair" e "concatenar" nesses dados e em alguns outros dados arbitrários, o "tipo" é um tanto irrelevante (para a minha linguagem imaginária) (exemplo : talvez add(12, a)
rendimentos 109
que é 12
mais o valor ASCII a
).
Vamos conversar C por um segundo. C praticamente permite que você faça o que quiser com qualquer dado arbitrário. Se você estiver usando uma função que leva dois uint
s - você pode converter e transmitir o que quiser - e os valores serão simplesmente interpretados como uint
s. Nesse sentido, C é "não digitado" (se você o tratar dessa maneira).
No entanto - e chegando ao ponto de Brendan - se eu lhe disser que "Minha idade é 12
" - então 12
tem um tipo - pelo menos sabemos que é numérico. Com o contexto, tudo tem um tipo - independentemente da linguagem.
É por isso que eu disse no começo - sua pergunta é de semântica. Qual é o significado de "não digitado"? Acho que Brendan bateu na cabeça quando disse "sem tipos estáticos" - porque é tudo o que isso pode significar. Os seres humanos naturalmente classificam as coisas em tipos. Nós sabemos intuitivamente que há algo fundamentalmente diferente entre um carro e um macaco - sem nunca ter sido ensinado a fazer essas distinções.
Voltando ao meu exemplo no começo - um idioma que "não se preocupa com tipos" (por si só) pode permitir que você "adicione" uma "idade" e um "nome" sem produzir um erro de sintaxe ... mas isso não significa que é uma operação lógica.
Javascript pode permitir que você faça todo tipo de coisa maluca sem considerá-las "erros". Isso não significa que o que você está fazendo é logicamente correto. Isso é para o desenvolvedor dar certo.
Um sistema / idioma que não impõe a segurança de tipo no tempo de compilação / construção / interpretação é "não digitado" ou "digitado dinamicamente"?
Semântica.
EDITAR
Eu queria adicionar algo aqui, porque algumas pessoas parecem estar se envolvendo com "sim, mas o Javascript tem alguns" tipos "".
No meu comentário sobre a resposta de outra pessoa, eu disse:
Em Javascript, eu poderia ter objetos criados para serem "Macacos" e objetos criados para serem "Humanos" e algumas funções poderiam ser projetadas para operar apenas em "Humanos", outras em apenas "Macacos" e outros ainda apenas em "Things With Arms". Se a linguagem já foi informada ou não de que existe uma categoria de objetos como "coisas com armas" é tão irrelevante para montagem ("sem tipo") quanto para Javascript ("dinâmica"). É tudo uma questão de integridade lógica - e o único erro seria usar algo que não tivesse armas com esse método.
Portanto, se você considera que o Javascript possui alguma "noção de tipos" internamente - e, portanto, "tipos dinâmicos" - e acha que isso é "distintamente diferente de um sistema não digitado" - você deve ver no exemplo acima que qualquer "noção de tipos "internamente é realmente irrelevante.
Para executar a mesma operação com C #, por exemplo, eu precisaria de uma interface chamada ICreatureWithArms
ou algo semelhante. Não é assim em Javascript - não é em C ou ASM.
Claramente, se o Javascript tem ou não conhecimento de "tipos" é irrelevante.