【问题标题】:TypeScript: undefined is not assignable to type 'boolean | ConnectionOptions | undefinedTypeScript:undefined 不能分配给类型 'boolean |连接选项 |不明确的
【发布时间】:2022-01-25 09:14:45
【问题描述】:

我正在使用下面的代码块,几个月前我用 JavaScript 构建了它,但上周我决定开始学习 TypeScript。我似乎找不到如何正确定义数据类型。有没有人有任何提示或资源可以帮助我解决这个问题?


这是确切的错误消息:

src/utils/pool.ts:5:5 - 错误 TS2322:类型 '"" | { 拒绝未授权:假; } | undefined' 不可分配给类型 'boolean |连接选项 |不明确的'。 类型 '""' 不可分配给类型 'boolean |连接选项 |未定义'。

5 ssl: process.env.PGSSLMODE && {rejectUnauthorized: false },


非常感谢!

import { Pool, PoolConfig } from 'pg';


 export const pool = new Pool({
      connectionString: process.env.DATABASE_URL,
      ssl: process.env.PGSSLMODE && { rejectUnauthorized: false },

    })

 pool.on('connect', ()=> console.log('Postgres connected'))

【问题讨论】:

  • 您能否分享 Pool 类的代码以更好地回答您的问题。从错误所指示的内容来看,您似乎正在使用类型为 'boolean | 的字符串。连接选项 |未定义'是预期的
  • 嘿 Atik,Pool 不是一个类。它是一个 npm 包 npm i @types/pg。但是,当我删除 process.env.PGSSLMODE && 时,它似乎可以工作。
  • 我的坏没有看到路径。我从未使用过这个包,但从外观上看,如果我正确解释错误,您需要检查 process.env.PGSSLMode 的值,看起来它是空字符串,在这个短路语法中是错误的,并且分配了 ssl字符串的值应该是 'boolean |连接选项 |未定义'

标签: javascript node.js typescript postgresql express


【解决方案1】:

从错误指示看来,您使用的字符串类型为 'boolean |连接选项 |未定义'是预期的 试试这个语法

import { Pool, PoolConfig } from 'pg';


 export const pool = new Pool({
      connectionString: process.env.DATABASE_URL,
      ...( process.env.PGSSLMODE ? {ssl: { rejectUnauthorized: false }} : {}),
    })

 pool.on('connect', ()=> console.log('Postgres connected'))

【讨论】:

  • 这真的应该是评论,而不是答案。
  • Naveen Atik,非常感谢!这行得通!但是你认为你可以给我一个快速的语法,这将有助于我更好地学习 TS 前进。再次非常感谢!
【解决方案2】:

如果您解释日志输出,它清楚地表明存在预期类型和您声明的类型的问题。

预期类型是, booleanConnectionOptionsundefined

给定的类型是, ""{rejectUnauthorized: false; }未定义

您需要分配适当类型的变量或更新当前分配的变量的类型。

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 2017-06-29
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多