我创建了一个Kotlin多平台应用程序,生成JS和TypeScript输出文件,我正在尝试在TypeScript项目中使用这些输出文件。我对TypeScript以及整个npm生态系统都比较新。
酒店目录中的第一个package.json如下所示:{
"main": "kotlin/hotel.js",
"devDependencies": {
"webpack": "4.42.1",
"webpack-cli": "3.3.11",
"source-map-loader": "0.2.4",
"webpack-dev-server": "3.10.3",
"css-loader": "3.4.2",
"style-loader": "1.1.3"
},
"dependencies": {
"kotlin": "file:/home/vlad/Code/hotel-state/build/js/packages_imported/kotlin/1.4.0-M2",
"kotlin-source-map-loader": "file:/home/vlad/Code/hotel-state/build/js/packages_imported/kotlin-source-map-loader/1.4.0-M2"
},
"peerDependencies": {},
"optionalDependencies": {},
"bundledDependencies": [],
"name": "hotel",
"version": "1.0.0"
}
js目录下的第二个package.json文件如下所示:
{
"private": true,
"workspaces": [
"packages/hotel",
"packages/hotel-test"
],
"devDependencies": {},
"dependencies": {},
"peerDependencies": {},
"optionalDependencies": {},
"bundledDependencies": [],
"name": "hotel",
"version": "1.0.0"
}
从酒店目录中,我已经完成。
sudo npm link hotel
在我的第二个项目中,我现在将这个添加到
package.json
,然后跟着一个npm install
。 "dependencies": {
"hotel": "file:/usr/lib/node_modules/hotel",
"lit-html": "^1.2.1"
},
当我点击自动完成时,我可以看到酒店套餐,但它仍然在下面显示红线。当我尝试在其他TypeScript文件中使用它时,它停止编译。那个hotel.d.ts文件中的TypeScript头部有一个命名空间。
declare namespace hotel {
type Nullable<T> = T | null | undefined
namespace com.harakati.hotel {
/* ErrorDeclaration: Class com.harakati.hotel.TH with kind: OBJECT */
}
namespace com.harakati.hotel {
class Room {
constructor(roomNumber: Nullable<number>)
static Room_init_$Create$(roomNumber: Nullable<number>, $mask0: number, $marker: Nullable<any /*Class kotlin.js.DefaultConstructorMarker with kind: OBJECT*/>): com.harakati.hotel.Room
roomNumber: number;
}
}
我是否正确地进行了链接?
我是否正确地包含了这个链接的包?
我可能还有什么遗漏吗?
import Booking = com.blah.Booking
而不是namespace.package.class。 - Jan Vladimir Mostert