Javascript 为什么编译器在将数字/bool分配给字符串变量时不抛出错误

Javascript 为什么编译器在将数字/bool分配给字符串变量时不抛出错误,javascript,typescript,Javascript,Typescript,我是Typescript新手,我试图了解Javascript变量类型是如何工作的, 我创建了一个简单的类:并将name属性限制为string,但是当我向string变量插入一个数字时,我没有得到任何错误,并且我的string属性将该数字作为字符串保存。。。我错过什么了吗? 当我调试它时,我发现它的名字是345。 //在ts中完成 class Customer { public name: string = ""; validate(input: string): string {

我是Typescript新手,我试图了解Javascript变量类型是如何工作的, 我创建了一个简单的类:并将name属性限制为string,但是当我向string变量插入一个数字时,我没有得到任何错误,并且我的string属性将该数字作为字符串保存。。。我错过什么了吗? 当我调试它时,我发现它的名字是345。 //在ts中完成

class Customer {
    public name: string = "";
    validate(input: string): string {
        alert("hey");
        return "hey";
    }
}
使用我的类的代码

 <script>        
        var tito = new Customer();
        tito.name = 345;
    </script>

假设代码的第一部分是使用Typescript完成的,使用该类的代码似乎放在HTML中,并且是纯Javascript,这就是为什么不检查类型,因为Typescript没有编译这些类型。 要使用类型检查,需要将代码放入.ts文件中:

// Inside a .ts file
var tito = new Customer();
tito.name = 345;

假设代码的第一部分是使用Typescript完成的,使用该类的代码似乎放在HTML中,并且是纯Javascript,这就是为什么不检查类型,因为Typescript没有编译这些类型。 要使用类型检查,需要将代码放入.ts文件中:

// Inside a .ts file
var tito = new Customer();
tito.name = 345;

谢谢,如果我理解正确的话,在ts中创建对象的最好方法是将我的数据从js传递到.ts,并在ts中传递到creae my object?@Damkulull你能给我们提供更多关于为什么要在js上而不是在.ts文件上创建对象的信息吗?根据我找到的一个教程,obj是在script标记中声明的,在“main”部分创建obj时使用了obj的类,就像在c中一样…在我的例子中,使用.ts作为类..谢谢,如果我理解正确,在ts中创建对象的最佳方法是将我的数据从js传递到.ts,并在ts中传递到creae my object?@Damkull你能给我们提供更多信息,说明为什么要在js上而不是在.ts文件上创建对象吗?根据我找到的一个教程,obj是在script标记中声明的,在“main”部分创建obj时使用了obj的类,就像在c中一样,在我的例子中使用.ts作为类。。