Javascript 类型脚本代码传输到JS库,不';t在健全性检查时抛出错误
用例-我有一个基于typescript的项目,它通过网页包传输到一个独立的库中Javascript 类型脚本代码传输到JS库,不';t在健全性检查时抛出错误,javascript,typescript,Javascript,Typescript,用例-我有一个基于typescript的项目,它通过网页包传输到一个独立的库中 要启动库,我们必须传递参数,这是一个对象,我们称它为initOptions 此initOptions对应于**initOptions**接口 如果未根据接口传递所需的参数,则typeScript将抛出错误 将相同的代码传输到JS,不会引发任何错误 这是标准行为吗?对于我的用例,我是否也需要对参数进行显式检查 假设库中有一个init方法,该方法根据下面的接口要求使用initOptions- // this is s
- 要启动库,我们必须传递参数,这是一个对象,我们称它为initOptions
- 此initOptions对应于**initOptions**接口
- 如果未根据接口传递所需的参数,则typeScript将抛出错误
- 将相同的代码传输到JS,不会引发任何错误
// this is somewhat how library looks like
interface InitOptions = {
arg1: String,
arg2: String,
arg3: String
}
function init(options: InitOptions): someOtherInterface {
return "something"
}
<!------------------------------------------------------------------------------------->
// Running in the dev env in typeScript
let initOptions: InitOptions = {
arg1: "sample",
arg2: "sample"
}
lib.init(initOptions) // throws an error as the arguments does not matched the interface.
<!------------------------------------------------------------------------------------->
// when running after transpiling the code as a library, it throws no error in this scenario
let initOptions: InitOptions = {
arg1: "sample",
arg2: "sample"
}
lib.init(initOptions) //throws no error at all
//这就是库的外观
接口初始化选项={
arg1:字符串,
arg2:字符串,
arg3:字符串
}
函数init(选项:InitOptions):someOtherInterface{
返回“某物”
}
//在类型脚本中的开发环境中运行
让initOptions:initOptions={
arg1:“样本”,
arg2:“样本”
}
lib.init(initOptions)//由于参数与接口不匹配而引发错误。
//在将代码转换为库后运行时,在这种情况下不会抛出错误
让initOptions:initOptions={
arg1:“样本”,
arg2:“样本”
}
lib.init(initOptions)//完全不抛出错误
所以,我的问题是,如果我们想对参数进行严格的检查,是否需要进行显式检查?typeScript在编译时不将此功能发送给JS吗
typeScript在编译时不将此功能发送给JS吗
绝对不是
此TypeScript:
// this is somewhat how library looks like
interface InitOptions {
arg1: String,
arg2: String,
arg3: String
}
function init(options: InitOptions): string {
return "something"
}
这是JS:
"use strict";
function init(options) {
return "something";
}
编译之后,与类型相关的所有内容都消失了
类型的意义在于帮助发展。编译后的生产代码的唯一好处是,由于不正确地使用应用程序数据,您希望有更少的bug。;类型检查只在编译时进行——JS在编译后就没有类型的概念