Javascript 如何将TypeScript定义文件用于其他函数
我是TS新手,希望使用我创建的定义文件告诉一个单独的函数它的参数类型 功能Javascript 如何将TypeScript定义文件用于其他函数,javascript,typescript,Javascript,Typescript,我是TS新手,希望使用我创建的定义文件告诉一个单独的函数它的参数类型 功能 export default ({}) => { const myFunction = ({ param1 }: { param1: string }) => { return param1; }; return { myFunction }; }; 功能d.ts declare var _default: ({}: {}) => { myFunction:
export default ({}) => {
const myFunction = ({ param1 }: { param1: string }) => {
return param1;
};
return {
myFunction
};
};
功能d.ts
declare var _default: ({}: {}) => {
myFunction: ({ param1 }: {
param1: string;
}) => string;
};
export default _default;
someotherfile.ts
export default ({ functions }) => {
functions().myFunction({ param1: 1 });
};
functions
参数来自上面的functions.ts,但是当然,其他一些file.ts不知道函数的结构是什么
我如何在这里使用functions.d.ts?
我甚至需要使用它吗?我想这会解决你的问题,如果你只需要它,就创建一个新类型
// functionsType.ts
export type functions = ({}: {}) => {
myFunction: ({ param1 }: {
param1: string;
}) => string;
};
像这样使用它
//someotherfile.ts
import { functions } from './functionsType';
export default (functions: functions) => {
functions({}).myFunction({ param1: 1 });
};
下面是一个示例,您可以看到关于错误参数类型的错误,它不是这样工作的
您可以使用定义为可以导入的非类型化javascript代码提供类型。例如,假设您将库X
导入到您的项目中,但它没有@types/X
包。然后您可以编写一个.d.ts
文件,将其集成到项目中。但这是完全可选的,您也可以按原样使用JS代码,而不使用类型
如果您希望函数的返回取决于它的参数,那么您可能需要的是泛型,这可能是一个有点复杂的主题。例如:
const myFunction = <Input extends { param1: any }>(inp: Input) => {
return inp.param1
};
最后一个示例对函数输入施加了类似的约束,但返回类型将始终被删除为any
不同之处在于,在第2个示例中,我们“强制”输入类型,而在第1个示例中,我们通常在施加约束时使用输入的任何类型。导入路径不能以“.d.ts”扩展名结尾。考虑导入“./Office”代替TS(2691)。然而,你确实给了我一个想法,将typeroot添加到我的tsconfig.json文件中……是的,但是我的导入路径并不是以.ts
或d.ts
结尾,我刚才用注释提到了哪个导入与你的示例中的文件等效。明白了,但是我如何导入函数类型?实际上,你可以创建一个新的类型,我更新了我的答案,下面是stackBlitz示例>您可以导入的非类型化javascript代码。但是我以前写过的非类型化javascript呢?它不是一个库,只是以前是JS现在是TS的代码。
const myFunction = (inp: { param1: any, [k: string]: any }) => {
return inp.param1
};