Javascript 铅字吊装
我正在努力理解打字稿中的提升。提升是否在Typescript中发生?如果是,与Javascript中发生的方式相比是否有任何区别 即使我在使用它的函数之后声明了接口,代码仍然可以正常传输。是否可以安全地假设它是由于作为蒸腾的一部分的提升而发生的,或者这里涉及到其他一些事情Javascript 铅字吊装,javascript,typescript,Javascript,Typescript,我正在努力理解打字稿中的提升。提升是否在Typescript中发生?如果是,与Javascript中发生的方式相比是否有任何区别 即使我在使用它的函数之后声明了接口,代码仍然可以正常传输。是否可以安全地假设它是由于作为蒸腾的一部分的提升而发生的,或者这里涉及到其他一些事情 getCarDetails({name: 'Xyz', topSpeed: 300}) function getCarDetails(carDetails: CarDetails) { console.log(carD
getCarDetails({name: 'Xyz', topSpeed: 300})
function getCarDetails(carDetails: CarDetails) {
console.log(carDetails.name);
console.log(carDetails.topSpeed);
}
interface CarDetails {
name: string;
topSpeed: number;
}
吊装是否以打字方式进行,如果是
对。TS只是添加了位的JS
与Javascript中的实现方式相比有什么不同吗
没有
即使我在使用它的函数之后声明了接口,代码仍然可以正常传输。是否可以安全地假设它是由于作为蒸腾的一部分的提升而发生的,或者这里涉及到其他一些事情
getCarDetails({name: 'Xyz', topSpeed: 300})
function getCarDetails(carDetails: CarDetails) {
console.log(carDetails.name);
console.log(carDetails.topSpeed);
}
interface CarDetails {
name: string;
topSpeed: number;
}
接口仅用于类型检查,这仅发生在TypeScript中(即在构建时和linting工具中)。JavaScript不支持接口,因此在传输过程中将丢弃这些接口
吊装是否以打字方式进行,如果是
对。TS只是添加了位的JS
与Javascript中的实现方式相比有什么不同吗
没有
即使我在使用它的函数之后声明了接口,代码仍然可以正常传输。是否可以安全地假设它是由于作为蒸腾的一部分的提升而发生的,或者这里涉及到其他一些事情
getCarDetails({name: 'Xyz', topSpeed: 300})
function getCarDetails(carDetails: CarDetails) {
console.log(carDetails.name);
console.log(carDetails.topSpeed);
}
interface CarDetails {
name: string;
topSpeed: number;
}
接口仅用于类型检查,这仅发生在TypeScript中(即在构建时和linting工具中)。JavaScript不支持接口,因此在传输过程中将丢弃这些接口
吊装是否以打字脚本进行
如果您的问题是“TypeScript是否会导致代码的提升行为?”,那么答案是“否,它不会””
TypeScript在运行时不存在,仅在编译时存在。而“提升”是一个与运行JavaScript代码相关的概念。TypeScript对这一点的影响与Notepad++一样大——不管您是否真的在那里编写代码。也就是说,它对吊装没有影响。JavaScript引擎在执行代码时执行此操作。这(可能)远远超过了TypeScript编译器完成的时间
但是,如果问题是“用TypeScript编写的代码是否仍表现出提升行为?”,答案是“是的,但与用TypeScript编写的事实没有任何关系”。无论是否存在TypeScript,它都会表现出相同的行为
即使我在使用它的函数之后声明了接口,代码仍然可以正常传输。是否可以安全地假设它是由于作为蒸腾的一部分的提升而发生的,或者这里涉及到其他一些事情
getCarDetails({name: 'Xyz', topSpeed: 300})
function getCarDetails(carDetails: CarDetails) {
console.log(carDetails.name);
console.log(carDetails.topSpeed);
}
interface CarDetails {
name: string;
topSpeed: number;
}
为了清楚起见,术语“提升”指的是在运行代码之前正在处理的声明。此JavaScript代码由于以下原因而起作用:
fn();
function fn() {};
此类型脚本代码不使用*:
const x: Foo = {id: 1};
interface Foo {
id: number;
}
类型系统仅在编译时存在。编译后,任何类型脚本构造(如接口)都将被删除。因为它们在JavaScript中不存在,所以在使用它们之前强制定义接口是一种任意和无用的限制
问题中的TypeScript代码包含以下JavaScript代码:
getCarDetails({ name: 'Xyz', topSpeed: 300 });
function getCarDetails(carDetails) {
console.log(carDetails.name);
console.log(carDetails.topSpeed);
}
因此,当代码运行时,只有getCarDetails()
将被提升
*。这就是导致死亡的行为。这仅仅是为了完整性——在给定的示例中不相关 吊装是否以打字脚本进行 如果您的问题是“TypeScript是否会导致代码的提升行为?”,那么答案是“否,它不会”” TypeScript在运行时不存在,仅在编译时存在。而“提升”是一个与运行JavaScript代码相关的概念。TypeScript对这一点的影响与Notepad++一样大——不管您是否真的在那里编写代码。也就是说,它对吊装没有影响。JavaScript引擎在执行代码时执行此操作。这(可能)远远超过了TypeScript编译器完成的时间 但是,如果问题是“用TypeScript编写的代码是否仍表现出提升行为?”,答案是“是的,但与用TypeScript编写的事实没有任何关系”。无论是否存在TypeScript,它都会表现出相同的行为 即使我在使用它的函数之后声明了接口,代码仍然可以正常传输。是否可以安全地假设它是由于作为蒸腾的一部分的提升而发生的,或者这里涉及到其他一些事情
getCarDetails({name: 'Xyz', topSpeed: 300})
function getCarDetails(carDetails: CarDetails) {
console.log(carDetails.name);
console.log(carDetails.topSpeed);
}
interface CarDetails {
name: string;
topSpeed: number;
}
为了清楚起见,术语“提升”指的是在运行代码之前正在处理的声明。此JavaScript代码由于以下原因而起作用:
fn();
function fn() {};
此类型脚本代码不使用*:
const x: Foo = {id: 1};
interface Foo {
id: number;
}
类型系统仅在编译时存在。编译后,任何类型脚本构造(如接口)都将被删除。因为它们在JavaScript中不存在,所以在使用它们之前强制定义接口是一种任意和无用的限制
问题中的TypeScript代码包含以下JavaScript代码:
getCarDetails({ name: 'Xyz', topSpeed: 300 });
function getCarDetails(carDetails) {
console.log(carDetails.name);
console.log(carDetails.topSpeed);
}
因此,当代码运行时,只有getCarDetails()
将被提升
*。这就是导致死亡的行为。这仅仅是为了完整性-在给定的示例中不相关。@VLAZ:您能否对下面提供的答案进行一次思考,其中提到的“吊装确实发生在TS中”取决于您的解释。我认为Quentin意味着用TS编写的代码仍然会表现出与用JS编写的代码相同的提升行为。这是正确的。我从另一个角度看它-TS是否提升了您的代码。在这种情况下,答案是“不”,因为引用昆廷的话: