在用于编辑打字稿代码的IDE中,checkApp.ts中有一条警告指出:
Argument type { someWrongParams: any } is not assignable to parameter type AddAppToListParams.
但是,当我运行时tsc
,不会抛出任何错误。运行时如何显示错误tsc
。
tsconfig.json
{
"compilerOptions": {
"allowJs": true,
"noEmit": true,
"pretty": true,
"strict": true,
"strictFunctionTypes": true,
"noImplicitReturns": true,
"module": "ES6",
"target": "ES6"
},
"exclude": [
"node_modules",
"dist"
],
"include": [
"./src/**/*"
]}
代码checkApp.ts
interface CheckAppParams {
appId: string;
}
export default (app: any) => async (requestParams: CheckAppParams): Promise<any> => {
const { appId } = requestParams;
await app.tasks.addAppToList({ someWrongParams: appId });
};
addAppToList.ts
interface AddAppToListParams {
appId: string;
}
export default (app: any) => async (requestParams: AddAppToListParams): Promise<any> => {
const { appId } = requestParams;
app.list.push(appId);
};
任务
import checkApp from './checkApp';
import addAppToList from './addAppToList';
export default (app: any) => async (): Promise<any> => {
app.tasks = {
addAppToList: addAppToList(app),
checkApp: checkApp(app),
};
};
如果要tsc引发错误,则可以将app
an定义为an interface
,而不是引用它any
,否则打字稿编译器将不知道它是什么。
将您的应用程序定义为接口将允许编译器识别该错误:
export interface App {
tasks: {
addAppToList: (requestParams: AddAppToListParams) => Promise<any>;
checkApp: (requestParams: CheckAppParams) => Promise<any>;
};
list: any; // you can make it whatever it needs to be.
}
这样的可行性interface
取决于您对的使用app
。上面的界面只是一个示例,可以是您需要的任何内容。
或者,您可以package.json
在运行前添加一个预构建钩子以进行一次皮棉检查,tsc
以检查IDE抛出的警告并阻止tsc运行。您必须使用与IDE使用的相同的linter规则,但它允许您向构建中添加比仅在您的定义的默认Typescript规则集中更严格的检查tsconfig.json
因此,不要在以前运行的地方tsc
使用npm run build
tsc
package.json:
"scripts": {
"prebuild": "do your lint checks here with can throw errors if you want",
"build": "tsc"
},
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句