我正在寻找在用Swift编写的原生iOS应用程序中包含共享跨平台库的方法。我的重点是JavaScript和Typescript源代码。
我做了一个playground项目,它将一个js文件加载到JSContext(JavaScriptCore框架内置的一部分)中,然后我可以从原生Swift代码调用JavaSript函数:
let jsContext = JSContext()
let jsURL = Bundle.main.url(forResource: "shared-lib", withExtension: "js")!
let jsScript = try String(contentsOf: jsURL, encoding: .utf8)
jsContext.evaluateScript(jsScript)
jsContext.setObject(
param1,
forKeyedSubscript: NSString(string: "param1")
)
jsContext.setObject(
param2,
forKeyedSubscript: NSString(string: "param2")
)
let resultJSValue = jsContext.evaluateScript("""
calculate(param1, param2);
""")
我也可以在WKWebView(WebKit框架的一部分)中执行js代码,并从中获得结果。
但是当我试图从TypeScript文件执行一个简单的函数时,结果在JSContext和WKWebView中都是undefined
。
是否可以在JSContext或WKWebView中运行TypeScript代码?
1条答案
按热度按时间3phpmpom1#
TypeScript需要编译成JavaScript。浏览器不直接支持TypeScript。因此,不能直接在
JSContext
或WKWebView
中运行TypeScript。