All right, let’s go.
Static types are defined at the time the code is written and checked at compile time, and do not allow values that do not fit the defined type to be assigned. For example, a type variable int you can only receive int (or short values, considering Java) or integer values of other types and you need to use casting. Static type are common in compiled languages.
Dynamic types accept any value for their assignment. Using the example of a dynamically typed language (javascript), one can define a variable and assign a numerical value to it, and a few lines later change the value to a string type. Dynamic types are common in interpreted languages (Javascript, Python, etc).
One more example: the expression int a = "1" results in a compilation error in a statically typed language (C++, Java, etc).
But the expressions var a = "1"; a = 5; a = { name: "asdf"};
are normally interpreted and executed in a dynamically typed language (Javascript).
More can be seen in https://answall.com/search?tab=votes&q=typing%20din%C3%a2mica%20e%20est%C3%a1tica
– Maniero