เพียงวางไว้ในลักษณะนี้: ในภาษาที่พิมพ์แบบคงที่ประเภทจะเป็นแบบคงที่ซึ่งหมายถึงเมื่อคุณตั้งค่าตัวแปรให้เป็นประเภทคุณจะไม่สามารถเปลี่ยนได้ นั่นเป็นเพราะการพิมพ์เกี่ยวข้องกับตัวแปรมากกว่าค่าที่มันอ้างถึง
ตัวอย่างเช่นใน Java:
String str = "Hello"; //statically typed as string
str = 5; //would throw an error since java is statically typed
ในขณะที่ภาษาที่พิมพ์แบบไดนามิกชนิดเป็นแบบไดนามิกหมายถึงหลังจากที่คุณตั้งค่าตัวแปรเป็นชนิดคุณสามารถเปลี่ยนได้ นั่นเป็นเพราะการพิมพ์เกี่ยวข้องกับค่ามากกว่าตัวแปร
ตัวอย่างเช่นใน Python:
str = "Hello" # it is a string
str = 5 # now it is an integer; perfectly OK
ในทางกลับกันการพิมพ์ที่รัดกุม / อ่อนแอในภาษานั้นเกี่ยวข้องกับการแปลงประเภทโดยนัย (ส่วนหนึ่งมาจากคำตอบของ @ Dario):
ตัวอย่างเช่นใน Python:
str = 5 + "hello"
# would throw an error since it does not want to cast one type to the other implicitly.
ในขณะที่ใน PHP:
$str = 5 + "hello"; // equals 5 because "hello" is implicitly casted to 0
// PHP is weakly typed, thus is a very forgiving language.
การพิมพ์แบบสแตติกช่วยให้สามารถตรวจสอบความถูกต้องของประเภทได้ในเวลารวบรวม ภาษาที่พิมพ์แบบคงที่มักจะรวบรวมและภาษาที่พิมพ์แบบไดนามิกจะถูกตีความ ดังนั้นภาษาที่พิมพ์แบบไดนามิกสามารถตรวจสอบการพิมพ์ในเวลาทำงาน