Ram*_*ran 6 javascript any typescript angular
我有一个类对象:
groupNameData: GroupNameData = new GroupNameData();
Run Code Online (Sandbox Code Playgroud)
我有一个any对象
groupNameDatas: any;
Run Code Online (Sandbox Code Playgroud)
我只是将类对象值赋给了any对象,比如
this.groupNameDatas = this.groupNameData;
Run Code Online (Sandbox Code Playgroud)
这意味着,this.groupNameDatas(Any)可以接受任何类型的数据,因为它是一个any对象.
现在我已经改变了作业,就像
this.groupNameData = this.groupNameDatas;// any to class
Run Code Online (Sandbox Code Playgroud)
它也像我的第一个任务示例一样工作.为什么它没有抛出错误cannot convert implicitly "any" to "GroupNameData"?
这是预期的行为(docs).希望这个样本能够澄清它:
let someObj = new MyClass();
// someObj will be of the "MyClass" type.
let anyObject : any;
// since anyObject is typed as any, it can hold any type:
anyObject = 1;
anyObject = "foo";
// including your class:
anyObject = someObj;
// so, if it can hold anything, it's expected that we can assign our custom classes to it:
someObj = anyObj;
Run Code Online (Sandbox Code Playgroud)
但是,打字稿如何接受将任何对象分配给类对象?
这是any类型的乐趣.Typescript无法知道您的any-typed变量是否包含您的对象的实例.它是任何东西,所以它可能是你的对象的一个实例.
小智 6
如果您查看官方文档,它清楚地说明“任何”所有编译时检查都将被忽略。
文档中的相关片段:
我们在编写应用程序时可能需要描述我们不知道的变量类型。这些值可能来自动态内容,例如来自用户或第 3 方库。在这些情况下,我们希望选择退出类型检查并让值通过编译时检查。为此,我们将这些标记为 any 类型:
Run Code Online (Sandbox Code Playgroud)let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay, definitely a booleanany 类型是使用现有 JavaScript 的一种强大方式,允许您在编译期间逐渐选择加入和选择退出类型检查。您可能希望 Object 扮演类似的角色,就像在其他语言中一样。但是 Object 类型的变量只允许您为它们分配任何值 - 您不能对它们调用任意方法,即使是实际存在的方法:
如果您选择使用另一种类型,例如数字或字符串,编译时检查就会启动,您知道这是不对的。
Run Code Online (Sandbox Code Playgroud)let notSure: any = 4; notSure.ifItExists(); // okay, ifItExists might exist at runtime notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check) let prettySure: Object = 4; prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.如果您知道类型的某些部分,但可能不是全部,则 any 类型也很方便。例如,您可能有一个数组,但该数组混合了不同类型:
Run Code Online (Sandbox Code Playgroud)let list: any[] = [1, true, "free"]; list[1] = 100;
| 归档时间: |
|
| 查看次数: |
2985 次 |
| 最近记录: |