将 typescript 版本升级到 3.7 后,我在 2 个函数中遇到了类型错误。功能正常工作(添加@ts-ignore 时一切正常)。
interface A {
x: string,
y: number,
}
interface B {
x: string,
y: number,
z: boolean,
}
function extract(input: B, keys: Array<keyof A>): Partial<A> {
const extract: Partial<A> = {};
keys.forEach((key: keyof A) => {
extract[key] = input[key]; // error!
// ~~~~~~~~~~~~ <-- 'string | number' is not assignable to 'undefined'
});
return extract;
}
function assign(target: B, source: Partial<A>): void {
(Object.keys(source) as Array<keyof A>).forEach((key) => {
target[key] = source[key]!; …Run Code Online (Sandbox Code Playgroud) 我正在使用 jdbc CallableStatement 来执行 MySQL 数据库中的过程。在编写单元测试时,我遇到了关于 registerOutParameter 方法的奇怪行为。
使用的 SQL 过程
PROCEDURE TEST_DOUBLE( OUT val DOUBLE ) BEGIN SET val = 2.5; END
PROCEDURE TEST_TEXT( OUT val TEXT ) BEGIN SET val = 'test'; END
Run Code Online (Sandbox Code Playgroud)
测试
statement = connection.prepareCall( "CALL TEST_DOUBLE(?)" );
statement.registerOutParameter( "val" , java.sql.Types.INTEGER );
statement.execute();
statement.getInt( "val" ); //Integer 2
statement.getDouble( "val" ); //Double 2.5
statement.getString( "val" ); //String "2.5"
statement = connection.prepareCall( "CALL TEST_TEXT(?)" );
statement.registerOutParameter( "val" , java.sql.Types.INTEGER );
statement.execute();
statement.getInt( "val" ); //Invalid value …Run Code Online (Sandbox Code Playgroud) 我在使用 中的存储过程时遇到问题MySQL 5.5.41。问题是在程序执行期间抛出错误 - Error code: 1172, SQLState: 42000, Message: Result consisted of more than one row。奇怪的是,它在执行语句时抛出:
INSERT INTO TB__X
(FK__A, FK__B, FK__C, FK__D, E, F, G, H, I, J, L)
VALUES
(9106, 4927, NULL, 3, 4.9990234375, 20, 0, 0, 1, 0, 1);
Run Code Online (Sandbox Code Playgroud)
该表是:
CREATE TABLE `TB__X` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`FK__A` int(11) NOT NULL,
`FK__B` int(11) NOT NULL,
`FK__C` int(11) DEFAULT NULL,
`FK__D` int(11) NOT NULL,
`E` double NOT NULL,
`F` int(11) NOT NULL, …Run Code Online (Sandbox Code Playgroud)