When you define a type with properties or function arguments, cfml does not convert your value to this type, it only checks if the type can be castes to this type, take this simple example.
function test(string str) {
Dump(str);
}
test(123);
When you execute, you will see that 123 is still a number. Luce only checks if the string can be a number, nothing else.
But there is s difference between acf and Lucee, acf translates all simple literally to strings, take this example:
b=true;
n=123;
In acf b and n containing a string, in lucee they remain what they are.