javascript - 打字稿 - 函数应该返回一个字符串而不是 () -> 字符串
问题描述
我正在尝试添加以下代码来检测浏览器,但我得到的错误browserData
是:
Type '{ browserName: () => string; browserVersion: string | null; operatingSystem: string | (() => string); } | { browserName: string; browserVersion: string; operatingSystem: string; }' is not assignable to type 'BrowserData'.
Type '{ browserName: () => string; browserVersion: string | null; operatingSystem: string | (() => string); }' is not assignable to type 'BrowserData'.
Types of property 'browserName' are incompatible.
Type '() => string' is not assignable to type 'string'.ts(2322)
function getBrowserInfo(): BrowserData {
const browserInfo = detectBrowser.detect();
const browserData: BrowserData =
browserInfo !== null
? {
browserName: browserInfo.name.toString,
browserVersion: browserInfo.version,
operatingSystem:
browserInfo.os !== null ? browserInfo.os.toString : '',
}
: { browserName: '', browserVersion: '', operatingSystem: '' };
return browserData;
}
declare type BrowserData = {
browserName: string;
browserVersion: string;
operatingSystem: string;
};
我看到有一个错误,因为返回值应该是一个字符串,而不是一个返回字符串的函数。我该如何纠正?
解决方案
您需要调用这些toString
方法 - 否则,您正在制作browserName
并且可能operatingSystem
是一个功能:
function getBrowserInfo(): BrowserData {
const browserInfo = detectBrowser.detect();
const browserData: BrowserData =
browserInfo !== null ?
{
browserName: browserInfo.name.toString(),
browserVersion: browserInfo.version,
operatingSystem: browserInfo.os !== null ? browserInfo.os.toString() : '',
} :
{
browserName: '',
browserVersion: '',
operatingSystem: ''
};
return browserData;
}
推荐阅读
- javascript - 如何将页面上某些元素的连接属性值作为字符串返回
- ios - 更新 PFObject 未按预期工作
- python - 熊猫:无法导入名称兼容
- c - 传递 C 字符串并将其与本地指针一起使用
- mysql - 如何查询最近日期并显示具体数据
- javascript - 如何正确删除表格单元格
- flutter - Flutter RenderFlex 在 Column Widget 内右侧溢出 15 个像素
- spring - Spring boot:使用 ServletUriComponentsBuilder 构建一个 uri“/{id}”
- python - 元组列表到列表列表中,带有元素分组
- linux-kernel - 在 Linux 内核中永久更改 SWIOTLB 的大小