diff --git a/website/src/daily-emails/2022-12-21.md b/website/src/daily-emails/2022-12-21.md new file mode 100644 index 00000000..50202ce3 --- /dev/null +++ b/website/src/daily-emails/2022-12-21.md @@ -0,0 +1,19 @@ +--- +title: > + Duck typing +pubDate: 2022-12-21 +permalink: > + archive/2022/12/21/duck-typing +--- + +If it looks like a duck, walks like a duck, and quacks like a duck, it must be a duck. + +If I pass a parameter into a function, as long as it works with the code within the function - it is of the correct type and has the expected properties and methods - it will work, although nothing is enforcing that the correct thing is passed in. + +If not, you'd get an error that the method or property doesn't exist when trying to invoke or access it. + +This is the opposite of strict typing, where you'd get a Type error if you passed the wrong thing. + +Both are valid approaches, though I prefer to use types and get specific error messages and leverage tools like static analysis, which work better the more it understands your code. + +In particular when writing and using open-source code that anyone can use however they like, I'd suggest leveraging types and type-checking, but it depends on what you, your team or your community prefer.